题目
求2至 n n n的第二小约数和。
分析
这道题可以用eratosthenes筛法(线性筛内存大),然后质数的第二小约数就是本身,合数筛掉时判断是不是第一次被筛就可以了。
代码
#include <cstdio>
using namespace std;
bool v[10000001]; int n; long long ans;
int main(){
scanf("%d",&n);
for (int i=2;i<=n;i++)
if (!v[i]){
ans+=i;
for (int j=i;j<=n/i;j++) {
if (!v[i*j]) ans+=i; v[i*j]=1;}
}
return !printf("%lld",ans);
}