在C++中添加素数的问题

Boo*_*ooB 2 c++

我的代码适用于最多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;
}
Run Code Online (Sandbox Code Playgroud)

mat*_*975 10

我相信,质数小于2000000总和为142913828922,但一个长整型的最大值为2147483647这是不是大到足以存储这笔款项.

  • 如上面的评论所示,请考虑使用64位整数来存储总和 (2认同)