这是第一组创建2-10000000个素数的代码。我想找到25000001的素因子分解。所以我想用25000001除以列表中的每个数字,然后把这个数字返回到一个从大到小的列表中。你知道吗
n = 10000000
primes = list()
multiples = set()
for i in range(2, n+1):
if i not in multiples:
primes.append(i)
multiples.update(range(i*i, n+1, i))
def primeFactors(x, factors):
factorList = []
if (x % factors) == 0:
factorList.append(factors)
print(factorList)
primeFactors(25000001, primes)
您可以使用列表:
角色
将对
factors
的元素进行“迭代”,条件if x % e == 0
用于过滤元素。你知道吗你想在这里做的其实是可行的,只是不能用列表。如果使用numpy数组,则可以将其转换为算术表达式,并在整个数组中自动广播:
这正是你想做的,几乎完全是你想做的方式,它的工作方式和你期望的一样。你知道吗
这显然更简洁,而且几乎总是更高效;更重要的是,它通常更具可读性。你知道吗
如果你想找到重复的因素呢?好吧,你可以把整个数组平方,然后把它立方,依此类推:
或者,更有效地,您可以将工作限制为仅过滤掉的数组,并以更少的工作获得相同的结果:
如果你想用x来检查每个因子中的数字,你需要迭代
[1,2,3,4...] % 3
基本上就是您当前正在做的事情,而不是检查每个元素。你知道吗你可以通过列表理解来达到同样的效果:
factorList = [n for n in factors if x % n == 0]
for循环和list理解都是等价的。你知道吗
要按所需格式打印:
如果您只是计划打印数字,可以在循环或列表中使其成为字符串:
要使用
join
元素必须是字符串,因此我们必须使用str(x)
或使用map将每个int
转换为字符串。你知道吗相关问题 更多 >
编程相关推荐