本文主要是介绍POJ2262.Goldbach's Conjecture(哥德巴赫的猜想),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题意】
哥德巴赫猜想:大于四的偶数可以分解为两个奇素数之和
对于给出的数n,如果有多对奇数素数加起来为n,则选择差值b-a最大化的。 若没有这样的一对,则打印"Goldbach's conjecture is wrong."
【思路】
枚举:直接枚举所有的,看是否符合条件,从小到大枚举到中间的话符合条件的也就是差值最大的
#include<stdio.h>
#include<string.h>
#define MAX 1000001
int prime[MAX]={0};
void sushu()
{ memset(prime,0,sizeof(prime));prime[0]=prime[1]=1; int i,j; for(i=2;i<MAX;i++) if(prime[i]==0) for(j=2;i*j<MAX;j++)prime[j*i]=1;
}
int main()
{ int n,i; sushu(); while(scanf("%d",&n)==1,n){ for(i=3;i<=n/2;i+=2) if(prime[i]==0&&prime[n-i]==0){printf("%d = %d + %d\n",n,i,n-i); break;}if(i>n/2)printf("Goldbach's conjecture is wrong.\n"); } return 0;
}
这篇关于POJ2262.Goldbach's Conjecture(哥德巴赫的猜想)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!