나는 1179908154라는 잘못된 대답을 계속하고있다. 처음에 나는 그것이 int가 아닌 내 총합 변수에 있다고 비난했다. 나는 긴 타입을 주었지만 동일한 대답을 얻는다. 생각?프로젝트 오일러 : 소수의 합계 ... 왜이 방법이 효과가 없을까요?
// Project Euler
// Problem 10
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
int p = 3;
long sum = 2;
bool isPrime;
for (p; p < 2000000; p++)
{
isPrime = true;
for (int i = 2; i <= sqrt(static_cast<double>(p)); i++) // cast into double for sqrt function
{
if (p % i == 0)
{
isPrime = false;
break;
}
}
if (isPrime == true)
{
cout << p << endl; // show each prime
sum += p; // add prime to sum
}
}
cout << sum << endl; // show sum
system("pause");
}
'sizeof (long)'은 구현시 4입니다. 32 비트가 너무 작아서 합계를 유지할 수 없습니다. –
정확합니다. 고맙습니다! 나는 오래 오래 대신 사용했다. – Shane