1. 程式人生 > >洛谷P1403 [AHOI2005]約數研究 數論 約數和

洛谷P1403 [AHOI2005]約數研究 數論 約數和

這一題沒有必要把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();
}