您的位置:首页 > 其它

分拆素数和

2016-04-24 17:43 162 查看
Description

把一个偶数拆成两个不同素数的和,有几种拆法呢?
 

Input

输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
 

Output

对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
 

Sample Input

30
26
0

 

Sample Output

3
2
代码:
素数打表法
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 10000
int z=0;
int flag[10000];
int prime[10000];
void get_prime()
{
    memset(flag,1,sizeof(flag));
    int i,j;
    for(i=2; i<=max; i++)
    {
        if(flag[i])
        {
            prime[z++]=i;
            for(j=i*i; j<=max; j+=i)
                flag[j]=0;
        }
    }
}
int main()
{
    int n,i,j,ans;
    get_prime();
    while(scanf("%d",&n),n)
    {
        ans=0;
        for(i=0; prime[i]<n/2; i++)
        {
            for(j=i+1; prime[j]<n; j++)
            {
                if(i!=j)
                {
                    if(prime[i]+prime[j]==n)
                    {
                        ans++;
                    }
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: