题目链接:hdu2098
代码一:
#include <cmath>
using namespace std;
int prime( int x)
{ int i;
for(i=( int)sqrt(x);i> 1;i--)
if(x%i== 0) return 0;
return 1;
}
int main()
{ int n,i,c;
while( cin>>n&&n)
{ c= 0;
for(i= 2;i<n/ 2;i++)
{
if(prime(i)&&prime(n-i))c++;
}
cout<<c<<endl;
}
return 0;
}
代码二:
#include<iostream>
using namespace std;
const int maxn=10001;
int flag[maxn];
int n;
void pre()
{
memset(flag,0,sizeof(flag));
flag[1]=1;
for(int i=3;i<maxn;i+=2)
{
if(!flag[i])
{
for(int j=i*i;j<maxn;j+=i)
flag[j]=1;
}
}
}
bool inrange(int x)
{
if(x%2==0)
return x==2;
return !flag[x];
}
int main()
{
pre();
int x,ans;
while(scanf("%d",&n) && n)
{
ans=0;
for(int i=n/2+1;i<n;i++)
{
x=n-i;
if(inrange(x) && inrange(i))
{
ans++;
}
}
printf("%d/n",ans);
}
}
代码三: