Il mio codice è di sotto. funziona perfettamente mentre l'intervallo non è molto grande. Comunque ogni volta che vado oltre un milione il programma si ferma. ad esempio per gli intervalli da 2 a 2000000 la somma dei numeri primi deve essere 142913828922 (dal retro del libro) mentre la mia applicazione mostra 1179908154. qualcuno può indicare per favore dove ho sbagliato.Ricerca di una somma di numeri primi tra un intervallo (il programma C++ non funziona per grandi numeri)
#include <iostream>
#include <math.h>
#define BELOW 2000000;
using namespace std;
bool isPrime(int num)
{
int i;
for (i = 2; i <= sqrt(num); i++) {
if (num % i == 0) {
return 0;
}
else {
;
}
}
}
int main()
{
long sum = 0;
for (int i = 2; i < BELOW i++) {
if (isPrime(i)) {
sum = sum + i;
printf("sum: %ld\n", sum);
}
}
cin.get();
return 0;
}
'' int' e long' può contenere solo numeri così grandi. –
Il valore massimo che un 'long' può contenere è 2147483647. Ovviamente il risultato desiderato è più grande di quello. Dovrai utilizzare il tipo di dati appropriato. –
Probabile overflow –