//Memory Time
//164K 235MS
题意分析:从6到1000000中的偶数可以写成n = a + b的形式,其中a,b都是奇素数,且要求a,b之差最大。
PS:昨天刚写了一个判断素数的函数,而且函数经过优化,所以此题做出来很轻松~小高兴!
代码:
#include<stdio.h>
#include<stdlib.h>
int isprim(int n);
int main(){
int n,i,flag;
while(1)
{
flag=1;
scanf("%d",&n);
if(n==0)
break;
for(i=3;i<n;i++)
{
if(isprim(i))
{
if(isprim(n-i))
{
printf("%d = %d + %d\n",n,i,n-i);
flag=0;
break;
}
}
}
if(flag)
printf("Goldbach's conjecture is wrong.\n");
}
//system("pause");
return 0;
}
int isprim(int n)
{
int m,flag=1;
if(n==2)
return 1;
else if(n==1||n%2==0)
return 0;
else
{
for(m=3;m*m<=n;m+=2)
if(n%m==0)
{
flag=0;
break;
}
}
if(flag)
return 1;
else
return 0;
}