栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中查找数字的所有因子的最有效方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中查找数字的所有因子的最有效方法是什么?

from functools import reducedef factors(n):        return set(reduce(list.__add__,      ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))

这将很快返回所有因素

n

为什么以平方根为上限?

sqrt(x) * sqrt(x) =x
。因此,如果两个因素相同,则它们都是平方根。如果使一个因子变大,则必须使另一个因子变小。这意味着这两个之一将始终小于或等于
sqrt(x)
,因此您只需要搜索到该点即可找到两个匹配因子之一。然后,您可以使用
x/ fac1
获取
fac2

reduce(list.__add__, ...)
走的小名单
[fac1, fac2]
,并在一个长长的清单一起加入他们。

[i, n/i] for i in range(1, int(sqrt(n)) + 1) if n % i ==0
返回两个因素,如果当你除以其余
n
由较小的一个是零(它并不需要检查较大的一个过;它只是获取除以
n
由较小的一个。)

set(...)
在外面摆脱重复,这仅发生于完美的正方形。对于
n = 4
,它将返回
2
两次,因此
set
摆脱其中之一。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624658.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号