费马小定理的复杂性

时间:2015-04-14 01:13:53

标签: big-o time-complexity

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)

1 个答案:

答案 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为素数或trueCarmichael number,则函数返回p