我的任务是返回整数(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/