for(int i=1;i*i<=n;i++)这个是为什么
登陆购买课程后可参与讨论,去登陆吧
抱歉,我没有理解你的问题。什么为什么?
一个正整数的约束就是该数可以整除的数,例如4,它的约数为1,2 ,4.
求一个数n的约数,可以使用遍历的方式将n把1到n除一遍。
也可以简单点的方法,约数几乎都是成对出现的,这是由于它的定义决定的。例如16/2=8 ,那么必然存在16/8=2;
a*b=n 假设a<=b 必有a<=sqrt(n) b>=sqrt,所以只需i<=sqrt即可,大于sqrt(n)的约数可以通过n/i求得到。
i<=sqrt(n) 两边同时平方,i*i <=n
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案
102 3
74 3
388 2
235 3
38 18
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星