算法提高 素数求和 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 输入一个自然数n,求小于等于n的素数之和 样例输入 2 样例输出 2 数据规模和约定 测试样例保证 2 <= n <= 2,000,000
此题如果使用一般的方法,必定超时,故使用筛选法
#include<iostream>
using namespace std;
int a[
2000000]={
0};
int main()
{
int n,i,j;
cin>>n;
for(i=
2;i<=
2000000;i++)
{
if(a[i]==
1)
;
else
{
for(j=i+i;j<=
2000000;j+=i)
a[j]=
1;
}
}
long long int sum=
0;
for(i=
2;i<=n;i++)
{
if(a[i]==
0)
{
sum+=i;
}
}
cout<<sum<<endl;
return 0;
}