zoukankan      html  css  js  c++  java
  • NUC1305 哥德巴赫猜想

    哥德巴赫猜想

    时间限制: 1000ms 内存限制: 65536KB

    问题描述

    对于任何偶数N大于或等于4 ,存在着至少一双素数P1和P2这样 N=P1+P2

    输入描述
    每行输入一个偶数,在4到215 之间。当输入0时结束输入
    输出描述
    每个输出行应只包含一个整数,输出对数。
    样例输入
    6
    10
    12
    0
    
    样例输出
    1
    2
    1
    

    问题分析:

    这个题与《HDU1397 POJ2909 UVA686 UVALive5674 Goldbach's Conjecture(II)》几乎完全相同,只是输入值的范围不同,代码直接拿过来就可以了。

    程序说明:

    参见参考链接。

    参考链接:HDU1397 POJ2909 UVA686 UVALive5674 Goldbach's Conjecture(II)

    题记:

    程序写多了,似曾相识的也就多了。


    AC的C++程序如下:

    /* HDU1397 POJ2909 UVA686 UVALive5674 Goldbach's Conjecture(II) */  
      
    #include <iostream>  
    #include <cmath>  
    #include <cstdio>  
      
    using namespace std;  
      
    const int MAXN = 2000000;  
    bool prime[MAXN+1] = {false, false, true};  
      
    // 埃氏筛选法  
    void esieve(bool sflag[], int n)  
    {  
        // 初始化  
        for(int i=3; i<=n; i++) {  
            sflag[i++] = true;  
            sflag[i] = false;  
        }  
      
        // 筛选  
        int max = sqrt(n);  
        for(int i=3; i<=max; i++) {  
            if(sflag[i]) {  
                for(int j=i+i; j <= n; j+=i)  
                    sflag[j] = false;  
            }  
        }  
    }  
      
    int main()  
    {  
        esieve(prime, MAXN);  
      
        int n, count, i;  
      
        while(scanf("%d", &n) != EOF) {  
            // 判定结束条件  
            if(n == 0)  
                break;  
      
            // 计算素数对个数  
            count = 0;  
            for(i=2; i<=n/2; i++)  
                if(prime[i] && prime[n-i])  
                    count++;  
      
            // 输出结果  
            printf("%d
    ", count);  
        }  
      
        return 0;  
    } 







  • 相关阅读:
    职业生涯系列
    自我进修系列
    每周问题系列
    职业生涯系列
    软件测试专用名词
    Java系列 – 用Java8新特性进行Java开发太爽了(续)
    Java系列
    EJB系列
    EJB系列
    EJB系列
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563795.html
Copyright © 2011-2022 走看看