Während ich versuchte, einen Algorithmus zu entwickeln, stolperte ich über diese Frage. Es ist keine Hausaufgabe.Summe (1/Primzahl [i]^2)> = 1?
Sei P_i = ein Array der ersten i Primzahlen. Jetzt muss ich die kleinste i
so dass
Sum<n=0..i> 1/(P_i[n]*P_i[n]) >= 1.
(wenn eine solche i
vorhanden ist).
Eine Näherung für die i
'th prime ist i*log(i)
. Also habe ich das in Java versucht:
public static viod main(String args[]) {
double sum = 0.0;
long i = 2;
while(sum<1.0) {
sum += 1.0/(i*Math.log(i)*i*Math.log(i));
i++;
}
System.out.println(i+": "+sum);
}
Allerdings wird das oben genannte nicht beendet, weil es auf 0,7 konvergiert. Allerdings 1/100000000^2
Runden auf 0.0
in Java, deshalb funktioniert es nicht. Aus dem gleichen Grund funktioniert es nicht, auch wenn Sie die 6. Zeile mit
sum += 1.0/(i*i)
ersetzen, während das sollte 1
erreichen, wenn mich nicht alles täuscht, weil die Summe schneller incease sollte als 1/2^i
und die letztere konvergiert zu 1
. Mit anderen Worten zeigt dies, dass Java-Rundung bewirkt, dass die Summe 1
nicht erreicht. Ich denke, dass das Minimum i
meines Problems existieren sollte.
ich nicht, wenn [Ungenauigkeiten in IEEE-754 doppelt überrascht sein soll Präzisions-Gleitkomma] (http://stackoverflow.com/questions/588004/is-floating-point-math-broken) komm irgendwo dazu ... :-) –
Bezug: [Summe des Reziproken der Primzahlen im Quadrat] (http://mathoverflow.net/q/53443) –
@squeamishossifrage, die ziemlich viele Antworten meine Frage verknüpfen. Ich existiere nicht. –