카페에 왔는데 영어공부하기 시끄러워서 백준 한문제를 풀었다.

문제 링크 : https://www.acmicpc.net/problem/6588

 

6588번: 골드바흐의 추측

문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 예를 들어 8은 3 + 5로 나타낼 수 있고, 3과 5는 모두 홀수인 소수이다. 또, 20 = 3 + 17 = 7 + 13, 42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23 이다. 이 추측은 아직도 해결되지 않은 문제이다. 백만 이하의 모

www.acmicpc.net

문제가 크게 어렵지는 않았다.

3부터 입력된 숫자까지 돌아가며 찾으면 된다. 

b-a가 가장 큰 값을 찾으라고했는데 그냥 루프 돌다가 찾은게 가장작은 것이기 때문에 찾으면 브레이크하면 끝이다.

지적은 언제나 환영입니다.

#include<iostream>
#include<cmath>

using namespace std;

bool prime_num_discriminator(int input) {
	for (int i = 2; i <= sqrt(input); i++) {
		if (input%i == 0)return false;
	}
	return true;
}

int main(void) {
	cin.tie(NULL);
	cout.tie(NULL);
	ios_base :: sync_with_stdio(false);
	int input = 1;
	int a, b;
	bool suc = false;
	
	while (input) {
		cin >> input;
		for (int i = 1; i < input / 2; i++) {
			a = 2 * i + 1; //홀수
			b = input - a;
			if (prime_num_discriminator(a) and prime_num_discriminator(b)) {
				cout << input << " = " << a << " + " << b << "\n";
				suc = true;
				break;
			}
		}
		if (!suc) cout << "Goldbach's conjecture is wrong\n";
	}
}

+ Recent posts