BigInteger öğesinin öncelikli olup olmadığını algılayan bir yöntem yazıyorum. Verilen bir sayının öncelikli olup olmadığını kontrol etmek için aşağıdaki kodu/algoritmayı kullandım. Ancak bu çok yavaştır ve bir sayı 10 rakam uzunluğundaysa uzun zaman alır.Bir BigInteger asal sayı olup olmadığını bulmak için en hızlı algoritma?
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 asal sayı ile çalışmak için daha iyi algoritmalar var mı? Stackoverflow'ta bununla ilgili bir soru bulamadım. Böyle bir soruyla karşılaşırsanız lütfen bize bildirin ya da nasıl çözeceğiniz konusunda bir fikriniz varsa, fikirleriniz çok takdir edilir.
2 sonra, sadece tek sayılar kontrol etmeniz gerekir. Ayrıca sqrt (n) 'ye ulaştıktan sonra durabilirsiniz. –
, ikinci döngüden önce, sayının öncelikli olup olmadığını ve ikinci döngüye mi geçtiğini kontrol etmeden önce? Bu yükü azaltmak için kulağa hoş geliyor, çünkü tüm çift sayıları ortadan kaldırırdım. – Ram
Ayrıca ve 'sqrt (n)' n ' –