Die Generierung der Primzahl ist einfach, aber wie findet man sie am schnellsten und rekursiv (Primzahlen)?Interview Frage: Was ist der schnellste Weg, um Primzahl rekursiv zu generieren?
Hier ist meine Lösung. Es ist jedoch nicht der beste Weg. Ich denke, es ist O (N * sqrt (N)). Bitte korrigieren Sie mich, wenn ich falsch liege.
public static boolean isPrime(int n) {
if (n < 2) {
return false;
} else if (n % 2 == 0 & n != 2) {
return false;
} else {
return isPrime(n, (int) Math.sqrt(n));
}
}
private static boolean isPrime(int n, int i) {
if (i < 2) {
return true;
} else if (n % i == 0) {
return false;
} else {
return isPrime(n, --i);
}
}
public static void generatePrimes(int n){
if(n < 2) {
return ;
} else if(isPrime(n)) {
System.out.println(n);
}
generatePrimes(--n);
}
public static void main(String[] args) {
generatePrimes(200);
}
Sie testen für Primalität, nicht Generieren Primzahlen. –
Ich bearbeite jetzt –
Sie können Sieb von Eratosthenes verwenden, wenn Sie Primzahlen bis zu n generieren möchten. –