编程介的小学生
2017-01-27 10:56
采纳率: 92.7%
浏览 1.2k
已采纳

分拆素数和

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

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

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

Sample Input
30 26 0

Sample Output
3 2

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2017-02-04 15:25
    已采纳
    点赞 评论
  • crazyboy12138 2017-01-28 02:09

    #include
    const int maxn = 10005;
    int is_prime[maxn];
    int main(){
    for(int i=0; i<maxn; i++)
    is_prime[i] = 1;
    is_prime[0] = is_prime[1] = 0;
    for(int i=2; i*i<maxn; i++)
    for(int j=i*2; j<maxn;j++)
    if(is_prime[j] && j%i==0)
    is_prime[j] = 0;
    //先筛出10005内的素数,is_prime[i]==1表示i为素数
    int n;
    while(scanf("%d",&n),n){
    int ans = 0;
    for(int i=0; i<n/2; i++){//题目要求分解为不同素数,所以i不能等于n/2
    if(is_prime[i] && is_prime[n-i])
    ans++;
    }
    printf("%d\n",ans);
    }
    return 0;
    }

    
    
    点赞 评论

相关推荐 更多相似问题