描述
验证“歌德巴赫猜想”,即:任意一个大于等于6的偶数均可表示成两个素数之和。
输入
输入只有一个正整数x。(x<=2000)
输出
如果x不是“
大于等于6的偶数”,则输出一行:
Error!
否则输出这个数的 所有分解形式,形式为:
x=y+z
其中x为待验证的数,y和z满足y+z=x,而且y<=z,y和z均是素数。
如果存在多组分解形式,则按照 y的升序输出所有的分解,每行一个分解表达式。
注意输出 不要有多余的空格。
样例输入
样例输出
Error!
否则输出这个数的 所有分解形式,形式为:
x=y+z
其中x为待验证的数,y和z满足y+z=x,而且y<=z,y和z均是素数。
如果存在多组分解形式,则按照 y的升序输出所有的分解,每行一个分解表达式。
注意输出 不要有多余的空格。
输入样例1: 7 输入样例2: 10 输入样例3: 100
输出样例1: Error! 输出样例2: 10=3+7 10=5+5 输出样例3: 100=3+97 100=11+89 100=17+83 100=29+71 100=41+59 100=47+53
#include <stdio.h>
#include <math.h>
int primenumber(int kk){
int i;
int k=(int)sqrt(kk);
for(i=2;i<=k;i++){
if(kk%i==0)
break;
}
if(i<=k){
return 0;
}else{
return 1;
}
}
int main()
{
int x;
scanf("%d",&x);
for(int y=2;y<=x/2;y++){
if(x<6||x%2!=0){
printf("Error!\n");
break;
}
int z=x-y;
if(primenumber(y)&&primenumber(z)){
printf("%d=%d+%d\n",x,y,z);
}
}
return 0;
}