复杂度的简单算法,以找到素数

时间:2017-05-19 14:07:43

标签: algorithm time-complexity primes asymptotic-complexity

我想知道这个简单算法的渐近复杂度是否找到素数是O(n):

PrimeNumber(n)
Int i;
If (n%2=0) then { return "not prime"; }
Else {
  For(i=3;i<(√n)+1;i=i+2;){
    If (n%i=0) then {return "not prime";}
  }     
}
return "prime";

1 个答案:

答案 0 :(得分:3)

时间复杂度为O(sqrt(n)),因为循环迭代自己(sqrt(n)+1-3)/2次,即O(sqrt(n))

请注意,由于O(sqrt(n))O(n)子集,所以说它是O(n)也是正确的 - 但是这个界限并不严格。< / p>