#include<stdio.h>
int sushu(int n)
{
int i;
for(i=2;i<=n/2;i++)
{
if(n%i==0)
return 1;
}
return 0;
}
int main()
{
int n,i,j;
while(scanf("%d",&n)!=EOF&&n!=0)
{
j=0;
for(i=2;i<=n/2;i++)
if(sushu(i)==0&&sushu(n-i)==0&&i!=n-i)
j++;
printf("%d\n",j);
}
return 0;
}
打表法
#include<stdio.h>
int prime[10010]={1,1,0};
int fun()
{
int i,j;
for(i=2;i*i<10010;i++)
{
if(!prime[i])
{
for(j=i*i;j<10010;j+=i)
prime[j]=1;
}
}
}
int main()
{
int n,k,i;
while(scanf("%d",&n)!=EOF&&(n!=0))
{
k=0;
fun();
for(i=2;i<=n/2;i++)
{
if(prime[i]==0&&prime[n-i]==0&&i!=n-i)
k++;
}
printf("%d\n",k);
}
//while(1);
return 0;
}
//使用while(1);记得加分号才能达到效果,使用完毕记得注释掉
//如果程序超时就看是否注释掉while(1);
//打素数表注意if(!a[i]),注意先定义数组,再定义函数,在main()函数中再调用此函数时注意加上函数名,比如此例中的fun();
//做题先审清题才能少做无用功,比如此例中“不同素数”,那就要加上限制条件“i!=n-i;”