#include <stdio.h>
 
//関数のプロトタイプ宣言
void goldbach(int n);
void q(int a, int b);
int prime(int n);
 
//main関数
int main(void){
    int a;
 
    goldbach(a);    
 
    return 0;
}
 
// ゴールドバッハ予想
void goldbach(int n){
    int i;
    for(i=2; i<=n/2; i++){   // 片方だけ調べる
        if(prime(i) && prime(n-i)){
            q(i, n-i);
        }
    }
}
 
//結果表示
void q(int a, int b){
    static int count = 0;  // 呼ばれるたびに値が保持
    count++;
    printf("%2d: %d = %d + %d\n", count
, a
+b
, a
, b
); }
 
//素数判定
int prime(int n){
    int i;
    if(n <= 1) return 0;  // 1以下は素数じゃない
 
    for(i=2; i<n; i++){
        if(n % i == 0){
            return 0;
        }
    }
    return 1;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CgovL+mWouaVsOOBruODl+ODreODiOOCv+OCpOODl+Wuo+iogAp2b2lkIGdvbGRiYWNoKGludCBuKTsKdm9pZCBxKGludCBhLCBpbnQgYik7CmludCBwcmltZShpbnQgbik7CgovL21haW7plqLmlbAKaW50IG1haW4odm9pZCl7CiAgICBpbnQgYTsKICAgIAogICAgc2NhbmYoIiVkIiwgJmEpOwogICAgZ29sZGJhY2goYSk7ICAgIAoKICAgIHJldHVybiAwOwp9CgovLyDjgrTjg7zjg6vjg4njg5Djg4Pjg4/kuojmg7MKdm9pZCBnb2xkYmFjaChpbnQgbil7CiAgICBpbnQgaTsKICAgIGZvcihpPTI7IGk8PW4vMjsgaSsrKXsgICAvLyDniYfmlrnjgaDjgZHoqr/jgbnjgosKICAgICAgICBpZihwcmltZShpKSAmJiBwcmltZShuLWkpKXsKICAgICAgICAgICAgcShpLCBuLWkpOwogICAgICAgIH0KICAgIH0KfQoKLy/ntZDmnpzooajnpLoKdm9pZCBxKGludCBhLCBpbnQgYil7CiAgICBzdGF0aWMgaW50IGNvdW50ID0gMDsgIC8vIOWRvOOBsOOCjOOCi+OBn+OBs+OBq+WApOOBjOS/neaMgQogICAgY291bnQrKzsKICAgIHByaW50ZigiJTJkOiAlZCA9ICVkICsgJWRcbiIsIGNvdW50LCBhK2IsIGEsIGIpOwp9CgovL+e0oOaVsOWIpOWumgppbnQgcHJpbWUoaW50IG4pewogICAgaW50IGk7CiAgICBpZihuIDw9IDEpIHJldHVybiAwOyAgLy8gMeS7peS4i+OBr+e0oOaVsOOBmOOCg+OBquOBhAogICAgCiAgICBmb3IoaT0yOyBpPG47IGkrKyl7CiAgICAgICAgaWYobiAlIGkgPT0gMCl7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9Cg==