골드바흐의 추측: 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]);

                                }

                        }

                }

        }

}