• 分拆素数和 埃氏筛法


    分拆素数和
    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
    Submit

    Status

    Practice

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

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

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

    Sample Input
    30
    26
    0

    Sample Output
    3

    #include <iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<deque>
    #define MAX 10007
    
    
    using namespace std;
    int n,ans;
    bool isprime[10007];
    
    void sieve()
    {
        int p=0;
        for(int i=0;i<MAX;i++)
            isprime[i]=true;
        isprime[0]=isprime[1]=false;
        for(int i=2;i<MAX;i++)
            {
                if(isprime[i]){
                    for(int j=2*i;j<MAX;j+=i)
                        isprime[j]=false;
                }
            }
    }
    
    int main()
    {
        while(1){
            ans=0; scanf("%d",&n);
            if(n==0) break;
            sieve();
            for(int i=2;i<n/2;i++)
            {
                if(isprime[i]&&isprime[n-i])
                    ans++;
            }
            printf("%d
    ",ans);
        }
        return 0;
    }

  • 相关阅读:
    6-1
    5-9
    5-8
    5-7
    5-6
    实验4-1:掌握Android应用调试方法、添加新界面
    实验3:理解Activity 的生命周期
    R.java常见问题解决方案
    配置Android模拟器
    第02周实验: 变量、算术运算和数据类型
  • 原文地址:https://www.cnblogs.com/codeyuan/p/4254465.html
Copyright © 2020-2023  润新知