前言:之前运用素数筛的时候都没注意,一个不是素数的数可能会被反复标记为1
题目地址
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = (int)3e7 + 10;
int a[N];
int n;
signed main() {
// 1
// 2 2
// 3 3
// 4 2
cin >> n;
int ans = 0;
for (int i = 2; i <= n; i++) {
if (a[i]) continue;
ans += i;
for (int j = i * 2; j <= n; j += i) {
if(a[j]==0)a[j] = 1; ans += i;
}
}
cout << ans;
return 0;
}