我正在编写一个检测BigInteger是否为素数的方法。 我使用了以下代码/算法来检查给定数字是否为素数。 但是如果一个数字长达10位,这会非常缓慢并且需要很长时间。
public boolean returnPrime(BigInteger testNumber){
int divisorCounter=1;
BigInteger index,i ;
for ( index= new BigInteger("2"); index.compareTo(testNumber) !=1; index=index.add(new BigInteger("1"))){
System.out.println(index);
for(i= new BigInteger("2"); i.compareTo(index) != 1; i=i.add(new BigInteger("1"))){
if((testNumber.mod(i).equals(BigInteger.ZERO) )){
divisorCounter++;
}
if(divisorCounter>2){
return false;
}
}
}
return true;
}
有没有更好的算法可以处理BigInteger素数?我在Stackoverflow上找不到相关问题。如果你遇到过这样的问题,请告诉我,或者如果你有解决办法,欢迎分享你的想法。
sqrt(n)
远小于n
。 - Peter Lawrey