【发布时间】:2019-09-29 09:18:34
【问题描述】:
我目前正在尝试使用 python 解决Project Euler problem 3,它试图找到一个数字的最大素数。我使用的方法本质上是蛮力通过每个小于所讨论整数的整数,检查它是否是所述整数的因子,然后检查它是否是素数。但是,由于某种原因,我的代码似乎无法正常工作。
我尝试使用创建一个函数,该函数遍历小于给定整数 (n) 的每个整数 (i),如果 i 可被 n 整除,则该函数继续检查 i 是否为素数遍历每个小于或等于 i (x) 的整数。如果 x 是 i 的因子,则将该值添加到定义为 (a) 的零整数。之后,如果 a 最终与 i + 1 相加,则意味着该因子是素数,因为唯一可整除的数字是它自己和 1。代码如下:
def primefactor(n):
for i in range(1, n+1): #goes through each integer less than n
if n % i == 0: #checks if integer is a factor
for x in range(1, i+1): #another loop to check if the factor is prime
a = 0
primenumbers = []
if i % x == 0:
a += x
if a == i + 1:
primenumbers.append(i)
print(primenumbers)
primefactor(13195)
我期望的输出是它打印一个数字的所有主要因素的列表,在这种情况下,[5, 7, 13, 29],但相反,我得到的只是一个空列表,[]
【问题讨论】:
-
primenumbers = []你把primenumbers在每个循环上变成一个空列表......