골드바흐의 추측 : 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다. 를 만족하는 경우의 수를 출력해주자.
소수를 구하기 위한 에라토스테네스의 체를 이용하면 된다.
두 소수가 같아도 된다.
#include <iostream>
using namespace std;
const int MAX = 1000000;
const int PRIMEMAX = 79498;
bool isPrime[MAX + 1];
int primeList[PRIMEMAX];
int primeCount;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
for (int i = 2; i < MAX; i++)
{
if (!isPrime[i])
{
primeList[primeCount++] = i;
for (int j = 2; j * i < MAX; j++)
isPrime[j * i] = true;
}
}
int tcc;
cin >> tcc;
while (tcc--)
{
int tar;
int res = 0;
cin >> tar;
for (int i = 0; primeList[i] < tar; i++)
if (tar - primeList[i] >= primeList[i] && !isPrime[tar - primeList[i]])
res++;
cout << res << '\n';
}
return 0;
}
2019-04-01 00:44:33에 Tistory에서 작성되었습니다.