Win_Star666
2022-08-06 19:28
采纳率: 100%
浏览 43

求一个数的因子之和的公式是怎么来的?

今天遇到这样一个题:
给定一个正整数n,请你求出 1~n 之间所有数字的因数之和是多少?
例如n=4时:
1的因数为1
2的因数为1,2
3的因数为1,3
4的因数为1,2,4
所以4以内所有数字的因数之和为:
1 + 1 + 2 + 1 + 3 + 1 + 2 + 4 = 15

我用了暴力之后,不出意料TLE了。
我也想不到更好的办法,便去查了题解。
题解里是这么写的:

#include<bits/stdc++.h>
using namespace std;
long long n;
long long ans=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++) ans+=n/i*i;
    cout<<ans;
    return 0;
}

但是我不知道第七行为什么可以写成n/i*i,希望有人帮忙解释下原因~

3条回答 默认 最新

相关推荐 更多相似问题