Input: p > 2, a; 1 < a < p
Output: Boolean: if p is a probable prime
b = a**(p-1)
if (b % p == 1){ return true; }
else { return false; }
所以我认为b
的乘法是log₂(a) * log₂(p-1)
,那么mod检查是log₂(b)
?
答案 0 :(得分:0)
b = a ** (p-1)
表示ap-1
。
复杂性取决于取幂的实现。在大多数情况下,我知道,简单的power
通过将基础与其自身相乘来实现。这导致类似O(log₂(a)⋅p)
的内容。
但是如果您使用fast exponentiation method的实现,则确实会O(log₂(p)⋅log₂(p)) = O((log₂(p))²)
,因为您可以在每个步骤后使用模p
,因此您的结果数字永远不会超过{{ 1}}。
注意:如果p
为素数或true
为Carmichael number,则函数返回p
。