您的位置:首页 > 其它

*哥德巴赫猜想

2016-09-14 17:50 99 查看
猜想:任何一个大于2的偶数都可以写成两个质数之和数值验证:#include<cstdio>#include<cstdlib>#include<cstring>int f(int n,int prime[]){int i,j;for(i=2;i<=n;i++)prime[i]=1;prime[0]=prime[1]=0;for(i=2;i*i<=n;i++){if(prime[i]==1){for(j=2*i;j<=n;j+=i)prime[j]=0;}}}int main(){int n,flag;int *prime;printf("哥德巴赫猜想验证\n");printf("输入一个想验证的最大数n(n>=6):");scanf("%d",&n);if(n<6){printf("数据输入错误!\n");return 0;}if(!(prime=(int *)malloc(sizeof(int)*n)))//欲分配n个空间{printf("分配内存失败!\n") ;return 0;}f(n,prime);for(int i=6;i<=n;i+=2)//从6开始,循环验证各偶数{flag=1;for(int j=2;j<=i/2;j++)//判断组成每个数的的加数{if(j%2==0||((i-j)%2==0)) continue;//若其中一个加数为偶数,不判断素数if(prime[j]==1&&prime[i-j]==1){printf("%d=%d+%d\n",i,j,i-j);flag=0;break;}}if(flag==1)printf("找到一个不符合要求的偶数\n");}return 0;}
<pre name="code" class="cpp">//素数打表#include<cstdio>#include<cstdlib>#include<cstring>int f(int n,int prime[]){for(int i=2;i<=n;i++)prime[i]=0;prime[0]=1;prime[1]=1;for(int i=2;i<=n;i++){if(prime[i]==1) continue;for(int j=2*i;j<=n;j+=i)prime[j]=1;}}int main(){int n,flag;int *prime;printf("哥德巴赫猜想验证\n");printf("输入一个想验证的最大数n(n>=6):");scanf("%d",&n);if(n<6){printf("数据输入错误!\n");return 0;}if(!(prime=(int *)malloc(sizeof(int)*n)))//欲分配n个空间{printf("分配内存失败!\n") ;return 0;}f(n,prime);for(int i=6;i<=n;i+=2)//从6开始,循环验证各偶数{flag=1;for(int j=2;j<=i/2;j++)//判断组成每个数的的加数{if(j%2==0||((i-j)%2==0)) continue;//若其中一个加数为偶数,不判断素数if(prime[j]==0&&prime[i-j]==0){printf("%d=%d+%d\n",i,j,i-j);flag=0;break;}}if(flag==1)printf("找到一个不符合要求的偶数\n");}return 0;}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: