In einem Interview, das ich diese Fragen gegeben wurde:Komplexität von Druck ersten n Primzahl
Write a function to print first n prime numbers
Die Funktion sieht wie folgt aus:
while (true) {
boolean isPrime = true;
for (int divisor = 2; divisor <= (int)(Math.sqrt(number)); divisor++) {
if (number % divisor == 0) {
isPrime = false;
break;
}
}
number++;
if(isPrime) {
System.out.print(number + " ");
primes++;
}
if (primes == n)
break;
}
Eine einfache Komplexitätsanalyse führte könnte zu O(n√n)
Aber der Interviewer sagte, dass die Outerloop geht nicht einfach n
bec Zum Beispiel, um die ersten 100 Primzahlen zu finden, die wir nach 541 (also die 100. Primzahlen) durchlaufen müssen.
Also, wie drücken wir die Zeitkomplexität aus?
Als eine Randnotiz: Ich würde lieber Divison Divisor <= Nummer 'im Gegensatz zum Aufruf von' Math.sqrt() 'und geben Casting. – blazs