可以很显然的看出分块的性质……
看不出来的打个表也能看出来。
然后就是随手做做就行了。
#include<bits/stdc++.h> #define N 1000005 typedef long long ll; using namespace std; ll n,sum,f[N]; int main(){ cin>>n; for(int i=2;i<=n;i++)for(int j=i;j<=n;j+=i)f[j]+=i; for(int i=1;i<=n;i++)sum+=n-1-f[i],printf("%lld ",sum); return 0; }