我的代碼如下。它的工作完美,而間隔不是很大。然而,無論什麼時候我超過一百萬的程序停止。例如對於時間間隔2到2000000,素數總和應該是142913828922(從本書的後面),而我的應用程序顯示1179908154.有人可以指出我出錯的地方。找到間隔之間的素數總和(C++程序不適用於大數字)
#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'和'long'只能包含這麼大的數字。 –
「長」可以保持的最大值是2147483647.顯然,您的期望結果比這更大。您必須使用適當的數據類型。 –
可能溢出 –