#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;
int count = 0;
for(i=2; i<n; i++){
if(prime(i) && prime(n-i)){
count++;
q(i, n-i);
}
}
}
//結果表示
void q(int a, int b){
static int count = 0; // 呼ばれtabi値が保持
count++;
printf("%2d: %d = %d + %d\n", count
, a
+b
, a
, b
); }
//素数判定
int prime(int n){
int i;
int sosuu = 1;
for(i=2; i<n; i++){
if(n%i==0){
sosuu = 0;
break;
}
}
return sosuu;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovL+mWouaVsOOBruODl+ODreODiOOCv+OCpOODl+Wuo+iogAp2b2lkIGdvbGRiYWNoKGludCBuKTsKdm9pZCBxKGludCBhLCBpbnQgYik7CmludCBwcmltZShpbnQgbik7CgovL21haW7plqLmlbAKaW50IG1haW4odm9pZCl7CiAgICBpbnQgYTsKICAgIAogICAgc2NhbmYoIiVkIiwgJmEpOwogICAgZ29sZGJhY2goYSk7ICAgIAoKICAgIHJldHVybiAwOwp9CgovLyDjgrTjg7zjg6vjg4njg5Djg4Pjg4/kuojmg7MKdm9pZCBnb2xkYmFjaChpbnQgbil7CiAgICBpbnQgaTsKICAgIGludCBjb3VudCA9IDA7CiAgICBmb3IoaT0yOyBpPG47IGkrKyl7CiAgICAgICAgaWYocHJpbWUoaSkgJiYgcHJpbWUobi1pKSl7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIHEoaSwgbi1pKTsKICAgICAgICB9CiAgICB9Cn0KCi8v57WQ5p6c6KGo56S6CnZvaWQgcShpbnQgYSwgaW50IGIpewogICAgc3RhdGljIGludCBjb3VudCA9IDA7ICAvLyDlkbzjgbDjgox0YWJp5YCk44GM5L+d5oyBCiAgICBjb3VudCsrOwogICAgcHJpbnRmKCIlMmQ6ICVkID0gJWQgKyAlZFxuIiwgY291bnQsIGErYiwgYSwgYik7Cn0KCi8v57Sg5pWw5Yik5a6aCmludCBwcmltZShpbnQgbil7CiAgICBpbnQgaTsKICAgIGludCBzb3N1dSA9IDE7CiAgICAKICAgIGZvcihpPTI7IGk8bjsgaSsrKXsKICAgICAgICBpZihuJWk9PTApewogICAgICAgICAgICBzb3N1dSA9IDA7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBzb3N1dTsKfQoK