C언어/예제

[C] 숫자를 소수끼리의 합으로 분해하는 프로그램

thpop 2024. 11. 6. 16:53
반응형

사용자로부터 숫자를 입력받고, 그 숫자를 가능한 소수의 합으로 분해하여 그 경우의 수를 출력하는 프로그램을 만들어볼 것이다.

 

기대하는 출력 결과는 아래와 같다.

122
122 = 13 + 109
122 = 19 + 103
122 = 43 + 79
122 = 61 + 61

 

만약 소수의 합으로 나타내는 것이 불가능하다면 아래와 같이 출력된다.

51
불가능합니다.

 

이를 구현해보면 아래와 같다.

#include <stdio.h>
int primechecker(int a){
	if (a==2){
		return 1;
	}
	for (int b=2;b<a;b+=1){
		if (a%b==0){
			return 0;
		}
	}
	return 1;
}

int main() {
	int input;
	scanf("%d", &input);
	int d=2;
	int f=0;
	while(d<=input/2) {
		int e=input-d;
		if(primechecker(d)==1 && primechecker(e)==1){
			printf("%d = %d + %d\n",input,d,e);
			f=1;
		}
		d+=1;
	}
	if (f==0){
		printf("불가능합니다.");
	}
}
반응형