这一题没有必要把1到n这n个数的约数算出来再累加
可以发现n/i表示1到n中i的倍数(即约数中含有i的数有多少个)
那么ans=Σn/i(i从1到n)
#include<iostream> using namespace std; int n,ans,a[1000005]; void solve() { int i; cin>>n; for(i=1;i<=n;i++) ans+=n/i; cout<<ans<<endl; } int main() { solve(); }
这一题没有必要把1到n这n个数的约数算出来再累加
可以发现n/i表示1到n中i的倍数(即约数中含有i的数有多少个)
那么ans=Σn/i(i从1到n)
#include<iostream> using namespace std; int n,ans,a[1000005]; void solve() { int i; cin>>n; for(i=1;i<=n;i++) ans+=n/i; cout<<ans<<endl; } int main() { solve(); }