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;
}