问题描述:哥德巴赫猜想——给定一个n(6 <= n < 1000000),找出所有可能的两个质数和恰好为n的组合。
解题思路:从最小的质数2开始依次寻找,利用isPrime()函数判断所给的数是否为质数,最后判断满足条件则输出组合。
code(c)
#include<stdio.h>
#include<math.h>
bool isPrime(int num){
int m;
if(num==1) return false;
if(num==2) return true;
for(m=2;m<(int)sqrt((double)num);m++){
if(num%m==0)
break;
}
if(num%m==0)
return false;
else
return true;
}
int main()
{
int a,i,s,flag;
while(1){
flag=1;
scanf("%d",&a);
if(a==0) return 0;
for(i=2;i<=a/2;i++)
if(isPrime(i)){
s=a-i;
if(isPrime(s)){
flag=0;
printf("%d = %d + %d\n",a,i,s);
break;
}
}
if(flag)
printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}