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

查找数字优化的所有除数

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

查找数字优化的所有除数

通过计算 素数分解, 可以找到一个数字的所有除数。每个除数必须是因式分解中素数的组合。

如果有素数列表,这是获得因式分解的简单方法:

def factorize(n, primes):    factors = []    for p in primes:        if p*p > n: break        i = 0        while n % p == 0: n //= p i+=1        if i > 0: factors.append((p, i));    if n > 1: factors.append((n, 1))    return factors

这称为审判分庭。有很多更有效的方法可以做到这一点。请参阅此处以获取概述。

现在,计算除数非常简单:

def divisors(factors):    div = [1]    for (p, r) in factors:        div = [d * p**e for d in div for e in range(r + 1)]    return div

计算所有除数的效率取决于查找素数的算法(此处小概述)以及因式分解算法。对于大量用户,后者总是很慢,对此您无能为力。



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

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

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