切換
舊版
前往
大廳
主題

ZeroJudge - a007: 判斷質數 解題心得

Not In My Back Yard | 2018-11-06 22:27:44 | 巴幣 4 | 人氣 833

題目連結:


題目大意:
給定一個 X ( 2 ≦ X ≦ 2, 147, 483, 647 ),判斷 X 是否為質數。

註:測試資料最多有 200, 000 筆。



範例輸入:
13
14



範例輸出:
質數
非質數



解題思維:
除了建表(要壓常數時間,不然會TLE)以外,可以使用「米勒-拉賓質性判定法」,在 WIKI 有相當完善的說明和證明。(建議可以先去過目一下,理解原理)

而一般情況來說,「米勒-拉賓判定法」並非確定性演算法(只能判斷出是合數,或是可能是質數)。但是有人求出了int範圍(2147483647)內,只要判斷 2、 7 、 61 即可知道是否是質數。

而且這個演算法十分高效(O( k * log ^ 3 (n))),k是我們測試的值。

由於運算時會碰到次方,因此我們需要快速冪




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作