用埃氏算法来素数求和

#include <iostream>

using namespace std;
//埃氏算法
int arr[2000001];
int main()
{
    long long n,ans=0;
    scanf("%lld",&n);

    for(int i=2;i<=n;i++){

        if(arr[i]==0){

            for(int j=2*i;j<=n;j+=i){
                arr[j] = 1;

            }
        }
    }
    for(int i=2;i<=n;i++){
        if(arr[i]==0){
            ans+=i;
        }
    }

    printf("%lld",ans);
    return 0;
}

0和1不是素数,从2到n依次将最小的数的倍数去掉,剩下的就是素数

原文地址:https://www.cnblogs.com/Guser/p/13768794.html