我想知道这个简单算法的渐近复杂度是否找到素数是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";
答案 0 :(得分:3)
时间复杂度为O(sqrt(n))
,因为循环迭代自己(sqrt(n)+1-3)/2
次,即O(sqrt(n))
。
请注意,由于O(sqrt(n))
是O(n)
的子集,所以说它是O(n)
也是正确的 - 但是这个界限并不严格。< / p>