2

我的代码适用于最多 300 或 20 的数字。但它不适用于 2000000。我尝试使用 long 代替,但它仍然不起作用。

#include <iostream>
bool prime(int i) {
    bool result = true;
    int isitprime = i;

    for (int j = 2; j < isitprime; j++) { ///prime number tester
        if (isitprime % j == 0) {
            result = false;
            break;
        }
    }

    return result;
}

int main(void) {
    using namespace std;
    long sum = 0;

    for (long i = 2; i <= 2000000; i++) {
        if (prime(i)) {
            sum += i;
        }
    }

    cout << sum << endl;
    system("pause");
    return 0;
}
4

1 回答 1

10

我相信小于 2000000 的素数之和是 142913828922 但长整数的最大值是 2147483647 不足以存储这个和。

于 2012-10-31T13:59:24.503 回答