#include <stdio.h>
#include <stdlib.h>
int prime(int x)
{
int i;
if(x==1||x==0)return 0;
for(i=2;i<=x/i;i++){
if(x%i==0)return 0;
}
return 1;
}
int main()
{
int n,i,j=0,k,s[10010],ans;
for(i=2;i<=10000;i++){
if(prime(i)){
s[j++]=i;
}
}
while(scanf("%d",&n)){
if(n==0)break;
ans=0;
for(i=0;i<=j-1&&s[i]<n/2;i++){
k=n-s[i];
if(prime(k))ans++;
}
printf("%d\n",ans);
}
return 0;
}先找出10000以内的素数,然后遍历,判断n-素数k是否还是素数
本文介绍了一个用于找出小于10000的所有素数,并针对输入的每个n(直到输入为0为止),找出所有素数对(p, q),使得p + q = n且p ≤ q。该算法首先通过筛选法生成素数表,然后遍历素数表检查是否存在满足条件的素数对。
1043

被折叠的 条评论
为什么被折叠?



