帮忙看下我这程序哪里错了
题目描述
输入一个偶数 N(N<=10000)N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想:任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10,10=3+7=5+5,则 10=5+5 是错误答案。
输入格式
第一行N
输出格式
4=2+2 6=3+3 …… N=x+y
输入输出样例
输入 #1复制
10
输出 #1复制
4=2+2
6=3+3
8=3+5
10=3+7
#include<stdio.h>
#include<math.h>
int z(int i){
for(int o=2;o<=floor(sqrt(i+0.5));o++){
i%o==0;
return 0;
}
return 1;
}
int main(){
int m;
scanf("%d",&m);
for(int i=2;i<=m;i++){
if(z(i)==1&&z(m-i)==1&&i<(m-i))
printf("m=%d+%d\n",i,m-i);
}
return 0;
}
1.判断是否是质数的时候,应该是if(o%i==0) return 0;
2.你只执行了一次,题目要求输出2-N的所有偶数。
代码已修改,运行结果如下,如有帮助,请帮忙采纳一下,谢谢。
代码修改如下:
#include<stdio.h>
#include<stdio.h>
#include<math.h>
int z(int i){
for(int o=2;o<=floor(sqrt(i+0.5));o++){
if(i%o==0) //修改1:这里加if
return 0;
}
return 1;
}
int main()
{
int m,j;
scanf("%d",&m);
for(int i=2;i<=m;i+=2)
{
for(j=2;j<i;j++)
{
if(z(j)==1&&z(i-j)==1&&j<=(i-j))
{
printf("%d=%d+%d\n",i,j,i-j); //注意这里
break;
}
}
}
return 0;
}