本文主要是介绍验证4~100内的哥德巴赫猜想,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.仅验证是否成立
#include <stdio.h>
#include <stdlib.h>
int main()
{int a,b,k,i,count1,count2;for (k=4;k<=100;k=k+2) //取值范围为4-100{for (a=2;a<=k/2;a++) //将k拆为a+b a的范围为k/2{count1=0; //思考:why不能直接在int定义(待)for (i=2;i<=a-1;i++) //验证a是否为质数{ if (a%i==0)count1++;break; //只要存在一个约数即可退出循环(不要也可以 只是减少循环加快代码运行速度)}if (count1==0) //若a为质数{b=k-a;count2=0;for (i=2;i<=b-1;i++) //再验证b是否质数{if (b%i==0){count2++;break;} //if后边有俩语句的话一定得加括号..开始我就因为这运行出来一直不对啊啊啊...}if (count2==0){printf("%d=%d+%d\n",k,a,b);break;}}}}return 0;
}
个人还有点小问题希望大佬能解答:count1=0为什么不能直接在int定义...?
2.验证并输出所有成立的情况(与上边只有三处区别)
#include <stdio.h>
#include <stdlib.h>
int main()
{int a,b,k,i,count1,count2;for(k=4;k<=100;k=k+2){ printf("%d",k); //区别1:先输出第一个等号左边数值for(a=2;a<=k/2;a++){count1=0;for(i=2;i<=a-1;i++) {if(a%i==0)count1++;}if(count1==0) {b=k-a;count2=0;for(i=2;i<=b-1;i++){if(b%i==0)count2++;}if(count2==0)printf("=%d+%d",a,b); //区别2:这不能要break}} printf("\n"); //区别3:该偶数全部输出后再换行} return 0;
}
这篇关于验证4~100内的哥德巴赫猜想的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!