골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 표현할 수 있다.
이걸 바탕으로 4부터 100까지의 짝수를 소수의 합으로 표현하는 코드를 짜고 있습니다.
어떻게 할까 생각하다가, 일단 100 아래의 소수를 배열로 만든 뒤 그 중 두 개를 랜덤으로 추출해 더하는 방식으로 생각하고 코드를 짰는데, 결과가 "4 = 2+2" 이렇게 밖에 안 나오네요. 뭐가 잘못된 걸까요?
void goldbach(){ // check prime number
const int size = 25; // there are 25 prime numbers under 100
int p_array[size];
int prime = 2; // first prime number is 2
int num_prime = 0;
int prime_check_flag = 0;
int a = 4;
while(num_prime < 25){
prime_check_flag = 0;
for(int i = 2; i < prime; i++){
if((prime %i == 0)){
prime_check_flag = 1;
break;
}
}
if(prime_check_flag == 0){
p_array[num_prime] = prime; // save prime numbers
num_prime++;
}
prime++;
}
for(a <= 100; a%2 == 0; a++){
for(int i = 0; i < 25; i++){
for(int j = 0; j < 25; j++){
if(a == p_array[i] + p_array[j]){
printf("%d = %d + %d \n",a,p_array[i],p_array[j]);
}
}
}
}
}