Win_Star666 2022-08-06 19:28 采纳率: 100%
浏览 51
已结题

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

今天遇到这样一个题:
给定一个正整数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条回答 默认 最新

  • leoRui_ 2022-08-06 19:51
    关注

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 修改了问题 8月6日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料