• 梦工厂实验室 素数求和 神奇的素数筛选


    问题 G: 素数求和

    时间限制: 1 Sec  内存限制: 256 MB
    提交: 142  解决: 30
    [提交][状态][讨论版]

    题目描述

    输入一个自然数n,求小于等于n的素数之和

    输入

     

    输出

     

    样例输入

    2

    样例输出

    2

    提示

    测试样例保证 2 <= n <= 2,000,000

    埃拉托斯特尼筛法(Sieve of Eratosthenes)

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<stack>
    #include<queue>
    #include<vector>
    #include<algorithm>
    using namespace std;
     
    int a[2000005];
    int main()
    {
        int n,i,j;
        long long sum;
        scanf("%d",&n);
        a[1]=1;
        a[2]=0;
        for(i=2;i<=n;i++){
            if(a[i]==0){
                for(j=2;i*j<=n;j++){
                    a[i*j]=1;    //筛法核心
                }
            }
        }
        sum=0;
        for(i=1;i<=n;i++){
            if(!a[i]){
                sum+=i;
            }
        }
        printf("%lld
    ",sum);
        return 0;
    } 
    /**************************************************************
        Problem: 1551
        User: 2016207228
        Language: C++
        Result: 正确
        Time:67 ms
        Memory:8896 kb
    ****************************************************************/
  • 相关阅读:
    分组声明
    描述项目的典型用户与场景
    用户调研
    10-11-12
    Sprint--5.21
    Cosplay之孩子的妈咪
    作业5.1之5.2
    51nod 1393 1393 0和1相等串
    51nod 1090 3个数和为0(排序+二分)
    51nod 1095 Anigram单词(map的使用)
  • 原文地址:https://www.cnblogs.com/yzm10/p/7257932.html
Copyright © 2020-2023  润新知