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 に答える