所以我需要使用 python 程序找到一个数字的素因数,并且我能够使用以下方法找到所有因数:
def primeFactors(n):
list = []
for x in range(2,n//2):
if n % x == 0:
list.append(x)
return list
但我不明白如何让程序忽略主要因素的倍数。
我找到了以下代码:
def primes(n):
divisors = [ d for d in range(2,n//2+1) if n % d == 0 ]
return [ d for d in divisors if \
all( d % od != 0 for od in divisors if od != d ) ]
但我实际上并不明白它的作用,而且这是一个作业,所以我不能只是复制和粘贴。
所以我想知道是否有人可以引导我朝着我应该做的事情的正确方向前进。另外,我不能使用任何花哨的函数,它必须主要使用循环、列表和基本数学等内置内容来完成。我使用的是 python 2.7 而不是 3.0。
Divisors 获取所有可能的除数,与您在代码中所做的相同。
返回的值
[ d for d in divisors if \
all( d % od != 0 for od in divisors if od != d ) ]
如果对于所有其他可能的除数 d
不能被任何其他除数整除,则保留除数 d
。如果传递给它的所有值都为 true,则 all
返回 true,并且 all
内部的表达式只是检查给定除数 d
是否不是以下除数列表中的任何其他除数 od
。这样,最终返回的值列表仅包含不是已存在因子倍数的除数。
我是一名优秀的程序员,十分优秀!