题意:
求1~n中每个数的最小质因数的和。
思路:
素数筛即可,把每个数的第一个质因数加到答案当中。
#include<bits/stdc++.h> using namespace std; typedef long long ll; int a[30000005]; int main() { ll n;cin>>n; ll sum=0; for(ll i=2; i<=n; i++){ if(!a[i]){ sum+=i; for(ll j=i*i; j<=n; j+=i){ if(!a[j]) a[j]=1,sum+=i; } } } cout<<sum; return 0; }