素数之和不到200万

时间:2013-08-25 14:37:51

标签: c++ algorithm

我正在尝试解决项目欧拉问题,它希望我找到低于200万的素数之和。这是我写的代码:

#include <iostream>
using namespace std;

bool isPrime (int x)
{
    for(int i = 2; i < x; i++)
    {
        if(x % i == 0)
            return false;
    }
    return true;
}
int main ()
{

    int x = 0;
    for(int i = 3 ; i < 2000000;i++)
    {
        if(isPrime(i))
            x = x + i;
    }


cout<<x+2<<endl;
}

我知道这不是解决这个问题的有效方法。我找到了一种更简单的方法,但我认为这个解决方案也应该给出正确答案。这段代码找到的答案是:1179908154。你能告诉我为什么这段代码给出了错误的答案吗?

1 个答案:

答案 0 :(得分:3)

代码为您提供了错误的答案,因为您到达x点,int类型无法代表您的号码。 您可以使用其他数据类型unsigned long long吗?这将能够保持它而不会溢出