作者在 2010-08-08 16:15:22 发布以下内容
题目:hdu2098
代码一:105ms
#include<iostream>
#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;
}
代码二:15ms#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);
}
}
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);
}
}