怎么用C语言编程验证哥德巴赫猜想?0
quakekk2014.06.27浏览3次分享举报
以下是我已经编好了的程序,只是想修改:#include"stdio.h"intisprime(intx)//构建函数isprime()来判断整数x是否是素数,若结果是0,表示x不是素数,结果是1,表示x是素数。//{inty=x... 以下是我已经编好了的程序,只是想修改:
#include"stdio.h"
int isprime(int x) //构建函数isprime()来判断整数x是否是素数,若结果是0,表示x不是素数,结果是1,表示x是素数。//
{
int y=x/2,j,s;
for(j=2;j<=y;j++) //让2到x/2的每一个数去除x。//
{
if(x%j==0){s=0;break;} //如果j整除了x,说明x不是素数,作出判定,提前结束循环。//
else{s=1;continue;} //如果j没有整除x,暂时判定x是素数,进入下一次循环进一步判定。//
}
return s;
}
void main()
{
printf("本程序将验证哥德巴赫猜想。猜想内容是:所有大于6的偶数都可以表示为2个奇素数之和。\n");
printf("请分别输入下限和上限,注意上下限都必须是大于6的偶数,上限大于下限:");
int a,b;
scanf("%d%d",&a,&b);
if(a>=b){printf("下限大于上限,输入错误,请重新输入:");scanf("%d%d",&a,&b);} //验证输入是否符合条件。//
else if(a%2==1||b%2==1){printf("下限或上限为奇数,输入错误,请重新输入:");scanf("%d%d",&a,&b);}
else if(a<6){printf("下限或上限小于6,输入错误,请重新输入:");scanf("%d%d",&a,&b);}
else {
int k,m;
for(k=a;k<=b;k=k+2) //对a到b的每一个偶数进行验证。//
{for(m=3;m<=k-3;m++)
{if(isprime(m)==0)continue;
else if(isprime(k-m)==0)continue;
else {printf("%d符合哥德巴赫猜想,且%d=%d+%d。\n",k,k,m,k-m);break;}
}
}
}
}
现在的问题是,如果遇到有一个数不符合哥德巴赫猜想,这个程序是不会显示说不符合,而只是跳过忽略了。虽然这个事情不大可能发生,但是我觉得这是程序本身的一点不完善。怎么修改?
如果各位觉得程序看了头疼,那就请帮忙解决一下这个问题,就是我对某一个范围内的所有数用for循环语句进行验证某个特性,如果一个数符合这个特性就输出说符合,如果不符合就输出说不符合,如果这个范围内所有数都不符合,就只输出说该范围内所有数都不符合,而不一一说明这个不符合,那个不符合。怎么做? 展开