#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);//시간초과 줄여주기 위한 코드
bool checkprimeNum[1000001];//1000001까지 소수인지 아닌지 체크 소수이면true
vector<int> primeNum;//판별된 소수를 넣을 vector
for (int i = 0; i < 1000001; i++)
{
checkprimeNum[i] = true;
}//일단은 true로 넣어줌
checkprimeNum[1] = false;//1은 소수가 아님
for (int i = 2; i*i < 1000001; i++)
{
for (int j = 2*i; j <= 1000000; j=j+i)//j=i+i의 경우 소수가 아니므로 false처리
{
checkprimeNum[j] = false;
}
}
for (int i = 1; i < 1000001; i++)
{
if (checkprimeNum[i])//소수인건 primeNum vector에 넣어줌
{
primeNum.push_back(i);
}
}
int x;
while (1)//무한 반복문
{
cin >> x;//숫자 입력받기
if (x == 0)//0 입력받을 시 무한반복문 break
{
break;
}
else
{
if (x % 2 == 1)//홀수의 경우 문자열 출력
{
cout << "Goldbach's conjecture is wrong.";
}
else
{
for (int i = 0; i<=x; i++)
{
int n2 = x - primeNum[i];//가장 작은 소수부터 차례로 대입해봤을 때
if (checkprimeNum[n2])//둘다 소수라면 결과출력
{
cout << x << " = " << primeNum[i] << " + " << n2<<"\n";
break;
}
}
}
}
}
}
이 문제의 경우 시간초과가 많이 떴는데
1. 아래 코드와
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
2.cout출력할 때 endl 보다는 "\n"를 사용하자
'백준 c++ > (1-1)백준 c++ 알고리즘 기초' 카테고리의 다른 글
백준 1676 c++ 팩토리얼 0의 개수 (0) | 2022.07.06 |
---|---|
백준 10872 c++ 팩토리얼 (0) | 2022.07.05 |
백준 1158 c++ 요세푸스 문제 (0) | 2022.07.04 |
백준 10845 c++ 큐 (0) | 2022.07.04 |
백준 1406 c++ 에디터 (0) | 2022.07.04 |