求 1 到 n 的所有数的约数和
2024-10-11 18:00:29
求 1 到 n 的所有数的约数和
暴力方法就是枚举每个数,算出他的约数和即可,这样有点慢。
另一种思路,枚举约数,判断他是谁的约数,并记录(即他的倍数有多少个),在乘以他自己。
n/i求的是n以内,i的倍数有多少个,在乘以i即可。
可以发现,枚举到n/2时,往后的所有数的倍数只有他自己,n/i = 1(i>n/2),这里可以用数学方法算出。
代码:
#include<cstdio> int main()
{
int n,ans = ;
scanf("%d",&n); for (int i=; i<=n; ++i)
{
ans += (n/i)*i;
} printf("%d",ans); return ;
}
最新文章
- 如何获取ResultSet的行数和列数
- 在服务器上发布MVC5的应用
- 记录一些在用wcf的过程中走过的泥巴路 【第一篇】
- android自定义控件(9)-Android触摸事件分发机制
- eclipse web项目转maven项目
- Linux命令学习-grep
- 使用mysql服务来记录用户的反馈
- HDU 4752 Polygon(抛物线长度积分)
- USB interrupt传输和isochronous传输的区别
- js文字滚动效果实现
- 记一次电信反射xss的挖掘与利用
- Saltstack 集中化管理平台安装
- openstack搭建之-horizon配置(14)
- iview table 实现在数据中自定义标识
- Vue(七)发送Ajax请求
- Maven多模块项目
- 【C#】C#操作Excel文件(转)
- ASP.NET OAuth、jwt、OpenID Connect
- 转:OGRE 渲染通路(Pass)
- html5中audio的详细使用