我做了一个程序,它返回所有小于 200 万的素数之和。我真的不知道这个是怎么回事,当正确答案是 142913828922 时,我得到 142891895587 作为我的答案。它似乎缺少一些素数。我很确定 getPrime 函数可以正常工作。我之前使用过几次并且工作正常。代码如下:
vector<int> getPrimes(int number);
int main()
{
unsigned long int sum = 0;
vector<int> primes = getPrimes(2000000);
for(int i = 0; i < primes.size(); i++)
{
sum += primes[i];
}
cout << sum;
return 0;
}
vector<int> getPrimes(int number)
{
vector<bool> sieve(number+1,false);
vector<int> primes;
sieve[0] = true;
sieve[1] = true;
for(int i = 2; i <= number; i++)
{
if(sieve[i]==false)
{
primes.push_back(i);
unsigned long int temp = i*i;
while(temp <= number)
{
sieve[temp] = true;
temp = temp + i;
}
}
}
return primes;
}