Hallo, ich bearbeite z.zt. das Projekt Euler und bin bei der Aufgabe 10 angelangt und bräuchte Verbesserungsvorschläge für meinen Code (Summe der Primzahlen unter 2Mio).
Der Code läuft auch und funktioniert, nur dummerweise (mein Schläpptop sei dank), seit über 1h Stunde
Und ist erst bei Primzahlen irgendwas zw. 1.7- 1.8 Mio Mio angelangt (ich will jetzt auch nicht abbrechen). Aber Effizient sieht definitiv anders aus
Inzwischen hab ich noch alle Vielfachen von 2, 3, 5, 7, 11, 13, 17 raus genommen (noch nicht getestet, da es ja immer noch läuft). Nur kann ich ja schlecht auf Vielfache von allen bisher gefundenen Primzahlen testen.
Denn dass würde ja bedeuten, nochmal alle bisher gefundenen Primzahlen in ein Array zustecken und dann jede einzelne dieser Primzahl, bei jeder zu testenden Zahl in die Hand zu nehmen. Das würde ja noch langsamer werden.
Mir fällt gerade aber auch nichts weiter ein, wie der Code effizienter werden könnte.
Der Code läuft auch und funktioniert, nur dummerweise (mein Schläpptop sei dank), seit über 1h Stunde
Und ist erst bei Primzahlen irgendwas zw. 1.7- 1.8 Mio Mio angelangt (ich will jetzt auch nicht abbrechen). Aber Effizient sieht definitiv anders aus
Inzwischen hab ich noch alle Vielfachen von 2, 3, 5, 7, 11, 13, 17 raus genommen (noch nicht getestet, da es ja immer noch läuft). Nur kann ich ja schlecht auf Vielfache von allen bisher gefundenen Primzahlen testen.
Denn dass würde ja bedeuten, nochmal alle bisher gefundenen Primzahlen in ein Array zustecken und dann jede einzelne dieser Primzahl, bei jeder zu testenden Zahl in die Hand zu nehmen. Das würde ja noch langsamer werden.
Mir fällt gerade aber auch nichts weiter ein, wie der Code effizienter werden könnte.
Java:
package tests;
public class Project10 {
public static void main(String[] args) {
double a = 3L;
double sum = 2L;
while(a < 2000000) {
boolean x = true;
double b = a - 1;
while(b > 1 && a%2!=0 && a%3!=0 && a%5!=0 && a%7!=0 && a%11!=0 && a%13!=0 && a%17!=0) {
if (a <0 || b <0 ||sum < 0) {
System.out.println("Überlauf");
break;
}
if (a % b == 0) {
x = true;
break;
}
else {
x = false;
}
b = b-1;
};
if (x == false) {
sum = sum + a;
System.out.println("Primzahl: "+a);
System.out.println("sum: "+sum);
}
a++;
}
}
}