昨天上軟作課,講到for loop跟while loop,接著就是出題目寫個質因數分解和列出所有質因數的小程式,一開始就是用很普通的做法: range(2, int(n**0.5)+1),除數從2到開根號取整的部分一個一個除,但後來就介紹了一個神奇的東西,能比較快的驗證一個數是不是質數。上課的例子是驗證1234567891是不是質數,如果用2到開根號取整一個一個算要等很久。 回宿舍後想要重現這種魔法,卻沒有靈感少了什麼,今天問助教這是什麼黑科技,助教說其實就是Shor演算法的雛形,餵狗看了一下,果然代數很重要...下禮拜實驗課會再講一次這個算法的原理跟寫法,有點期待🤣 附圖歪樓,應該是被擠出巢的幼鳥冷死。
4 comments
所以要怎麼樣比較快速驗證質數啊?
費馬小定理
Shor演算法主要是用來質因數分解,要用這個來驗證質數有點大材小用XD 一般都用Miller–Rabin驗證質數比較實用~ 幼鳥R.I.P.
看了一下還是要用到費馬小定理,輾轉相除法概念是通用的🤣