for(i=2;i<=n;i++)
{
flag=0;
for(j=2;j<=sqrt(i);j++) //Looping till square root of n times
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0)
sum+=i;
}
Zeit genommen sind zu laufen länger als 5 Sekunden, aber die Frist, die die Frage Anforderungen weniger als 5 Sekunden. Kann jemand eine optimierte Lösung vorschlagen? Danke!Programm Summe von Primzahlen finden zwischen 1 und 10^7
Verwenden Sie ein [Sieb von Eratosthenes] (https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes) auf dem Bereich und Summe der Primzahlen, die Sie finden. – NathanOliver
2 ist Primzahl. Alle anderen Primzahlen sind ungerade, was die Zahl der zu prüfenden Zahlen halbiert. – rossum
statt mit allen Zahlen zu überprüfen, nur mit zuvor gefundenen Primzahlen überprüfen und natürlich gerade Zahlen überspringen. –