下载此文档

1.歌德巴赫猜想.doc


文档分类:高等教育 | 页数:约24页 举报非法文档有奖
1/24
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/24 下载此文档
文档列表 文档介绍
 验证:2000以内的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。*问题分析与算法设计为了验证歌德巴赫猜想对2000以内的正偶数都是成立的,要将整数分解为两部分,然后判断出分解出的两个整数是否均为素数。若是,则满足题意;否则重新进行分解和判断。程序中对判断是否为素数的算法进行了改进,对整数判断“用从2开始到该整数的一半”改为“2开始到该整数的平方根”。原因何在请自行分析。*程序说明与注释#include<>#include<>intfflag(intn);intmain(){inti,n;for(i=4;i<=2000;i+=2){for(n=2;n<i;n++)/*将偶数i分解为两个整数*/if(fflag(n))/*分别判断两个整数是否均为素数*/if(fflag(i-n)){printf("%14d=%d+%d\n",i,n,i-n);/*若均是素数则输出*/break;}if(n==i)printf("error%d\n",i);}}intfflag(inti)/*判断是否为素数*/{intj;if(i<=1)return0;if(i==2)return1;if(!(i%2))return0;/*ifno,return0*/for(j=3;j<=(int)(sqrt((double)i)+1);j+=2)if(!(i%j))return0;return1;/*ifyes,return1*/} 。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。*问题分析与算法设计本题的重点不是判断素数的方法,而是求一个整数的反序数。求反序数的方法是从整数的末尾依次截取最后一位数字,每截取一次后整数缩小10倍,将截取的数字作为新的整数的最后一位(新的整数扩大10倍后加上被截取的数字)。这样原来的整数的数字从低到高被不断地截取,依次作为新的整数从高到低的各位数字。*程序说明与注释#include<>#include<>intnum(intnumber);intok(intnumber);intmain(){inti,count;printf("Thereareinvertableprimeswith4digits:\n");for(count=0,i=1001;i<9999;i+=2)//穷举全部的奇数{if(num(i))//若是可逆素数,则输出printf(count%9?"%3d:%d":"%3d:%d\n",++count,i);}return0;}intnum(intnumber){inti,j;if(!ok(number))return0;//判断是否为素数for(i=number,j=0;i>0;i/=10)//按位将整数倒过来,产生反序数{j=j*10+i%10;}if(number<j)//若原数小于反序数{if(!ok(i))//判断对应的反序数是否为可逆素数{return0;}else{return1;//若是可逆数素数,则返回1}}else{return0;}getchar();return0;}intok(intnumber){inti,j;if(number%2==0)//判断是否为素数return0;j=sqrt((double)number)+1;//取整数的平方根为判断的上限for(i=3;i<j;i+=2){if(number%i==0)//若为素数则返回1,否则返回0return0;}return1;}*思考题求1000以内的孪生素数。孪生素数是指:若a为素数,且a+2也是素数,则素数a和a+2称为孪生素数。。*问题分析与算法设计所谓回文素数是指,对一个整数n从左向右和从由向左读其结果值相同且是素数,即称n为回文素数。所以本题的重点不是判断素数的方法,而是求回文整数。构造回文数的方法很多,这里仅介绍一种最简单的算法。实现思路是先求出一个整数的回文数,再判断是否为素数。不超过1000的回文数包括二位和三位的回文数,我们采用穷举法来构造一个整数并求与其对应的反序数,若整数与其反序数相等,则该整数是回文数。*程序说明与注释#include<>inta(intn)intmain(){inti,j,t,k,s;printf("Followingarepalindromeprimesnotgreaterthan1000:\n");for(i=0;i<=9;++i)//穷举第一位for(j=0;j<=9;++j)//穷举第二位for(k=0;k<=9;++k)//穷举第三位{s=i*100+j*10+k;//计算

1.歌德巴赫猜想 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数24
  • 收藏数0 收藏
  • 顶次数0
  • 上传人840122949
  • 文件大小36 KB
  • 时间2019-03-08