我必须编写一个函数factor,它接受一个整数参数n,并返回从2 到n-1 中能整除n 的最小数。如果不存在这样的数字,则返回 -1。
我能够创建函数来查找因子,但不确定如何优化它以返回正确的结果。
def factors(n):
i = n
lst=[]
while i > 0:
if n % i == 0:
lst.append(i)
i -= 1
print(lst)
result=[i for i in lst if i > 2 and i < n-1]
print(result[1])
def main():
n=int(input("Enter n:"))
factors(n)
main()
请您参考如下方法:
您可以使用列表理解来查找数字的因数。此外,要优化您的解决方案,您只需要运行到一半的数量。
例如对于 12,12 的最大因数可以是 6。
大于该数一半的数不能作为它的因数。因此,您不需要在 n-1 之前运行循环。
>>> [n for n in range(2, number/2+1) if number % n == 0]
在上面的行中,我们将运行一个从 2 到 (number/2 + 1) 的循环,并检查数字是否可以被 n 整除,然后将其添加到列表中。
