Ana*_*kar 2 java primes time-complexity
每个素数都是6k + 1或6k-1的形式.为了检查数字是否为素数,我们可以使用以下算法.我见过基于这些算法编写的程序.
public boolean isPrime(int n)
{
if (n <= 1) return false;
if (n <= 3) return true;
if (n%2 == 0 || n%3 == 0) return false;
for (int i=5; i*i<=n; i=i+6)
if (n%i == 0 || n%(i+2) == 0)
return false;
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我们以下列方式编写代码,我不明白会出现什么问题:
public boolean isPrime(int number){
boolean primeFlag = false;
if(number == 0 || number ==1){
return primeFlag;
}
if(number == 2 || number == 3){
primeFlag = true;
}
if((number+1)%6 == 0){
primeFlag = true;
}
if((number-1)%6 == 0){
primeFlag = true;
}
return primeFlag;
}
Run Code Online (Sandbox Code Playgroud)
通过这种方式,与O(root(n))相比,我们可以将时间复杂度降低到O(1).如果我朝错误的方向走,请告诉我.
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |