python - 数的质因数的表示方法

标签 python python-3.x primes symbolic-math prime-factoring

我的任务是返回整数(n)的质因数。 我的问题是如何用编码的数学表达式来表达这一点? 我知道素数是只能被 1 和它本身整除的数字,但不知道如何将其放入代码中。

但是我确实发现这个编码有效,但我不知道为什么:

def primes(n):

    primfac = []
    d = 2
    while d*d <= n:
        while (n % d) == 0:
            primfac.append(d)  
            n //= d
        d += 1
    if n > 1:
       primfac.append(n)
    return primfac

有人可以向我解释一下为什么这个编码有效吗?为什么d选择2而不是1开始?另外,为什么他要对 d 进行平方并检查它是否等于或小于 n?等等。

最佳答案

d 从 2 开始,因为最终会得到无限的 1 列表作为因子,如 Tom Karzes提到。他对 d 求平方并检查它是否等于 n 的原因是因为您只需要检查该数字的平方根即可了解其因子和数学.sqrt() 比数字平方的计算成本更高。它的作用是检查d是否为n的因子,直到d达到n的平方根。然后他附加了d,因为它已被检查为一个因素。

这段代码还有什么地方你不明白吗?

关于python - 数的质因数的表示方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834722/

相关文章:

python - 如何让 python 将字符串解释为 python 代码?

python - Jupyter 服务器无法启动

没有参数的 Python 'raise' : what is "the last exception that was active in the current scope"?

c - 在 C 中找到 x 的下一个素数

python - 在mac中查找特定类型的文件(python)

python - Selenium Python webscraper 真的很慢

python - 我想选择一些随机数,但在 Python 中它们的相加应该始终是偶数

java - 蛮力法寻找素数

python - is_prime 函数在测试 121 时失败,不知道为什么

python - 使用 "src"布局在 Python 项目中使用 PyTest