哥德巴赫猜想的计算机验证,哥德巴赫猜想的计算机程序验证"/>
哥德巴赫猜想的计算机验证,哥德巴赫猜想的计算机程序验证
/*本程序用来验证哥德巴赫猜想--假如你的计算机足够强大的话。。。。
哥德巴赫猜想的一种命题加强是一个大于5的偶数可以表示成两个素数的和,本程序就是基于这一增强型命题来编写的,具体做法是输入一个上限值a1,
然后由计算机产生从6至a1之间的偶数表示成两个素数之和的效果,如果表示不成功即系统会发出警告,有兴趣的同学可以试一试。
练洋-------2012/12/25-----*/
#include
#include
#include
#include
void main()
{
int a1,count=0,i,j,state,*p,*p1,b1,b2,k;
printf("please enter a1:");//输入一个上限值
scanf("%d",&a1);
for(i=2;i<=a1;i++)//找出上限值内的所有素数
{
state=0;
for(j=2;j<=(int)sqrt(i);j++)
if(i%j==0){state=1;break;}
if(state==0)count++;
}
p=(int*)calloc(count,sizeof(int));
p1=p;
for(i=2;i<=a1;i++)
{
state=0;
for(j=2;j<=(int)sqrt(i);j++)
if(i%j==0){state=1;break;}
if(state==0)*(p++)=i;
}//pass!!!!
//for(i=0;i
for(i=6;i<=a1;i+=2)//进行组合
{
count=0;
for(j=0;;j++){if(*(p1+j)>(i/2)&&count==0){b1=j-1;count=1;}if(*(p1+j)>i){b2=j-1;break;}}
count=0;
//printf("b1=%d,b2=%d ",b1,b2);
for(j=0;j<=b1;j++)
for(k=b1;k<=b2;k++)
{//printf("%d?%d+%d ",i,*(p1+j),*(p1+k));getchar();
if(*(p1+j)+*(p1+k)==i){printf("number %d\t:.....%d=%d+%d\n",i,i,*(p1+j),*(p1
+k));count=1;}
}
if(count==0)printf("error!!! not exist...\a\a\a\a\a\a\a\a\n\n");//如不满足,即发出警告。。当然是没找到这种特例的
}
free(p1);
}
更多推荐
哥德巴赫猜想的计算机验证,哥德巴赫猜想的计算机程序验证
发布评论