Jede Primzahl hat die Form 6k + 1 oder 6k-1. Um zu überprüfen, ob eine Zahl prim ist oder nicht, können wir den folgenden Algorithmus verwenden. Ich habe Programme gesehen, die auf diesen Algorithmen basieren.Primzahlprüfung
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;
}
Aber ich verstehe nicht, was das Problem gewesen wäre, wenn wir Code in folgenden Weise geschrieben hatten:
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;
}
Damit wir die Zeit, die Komplexität reduzieren O (1) im Vergleich zu O (Wurzel (n)). Bitte lassen Sie mich wissen, wenn es in die falsche Richtung geht.
Nr. 2 und 3 sind Ausnahmen zu Ihrer angegebenen Regel; Weder sind sie von der angegebenen Form. In der Tat betrachten Sie eine 2,3 Wheel Faktorisierung. Einige Internetforschung wird helfen. – rossum