Skip to main content
 首页 » 编程设计

python之在 Python 中精炼因子

2025年05月04日24开发

我必须编写一个函数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 整除,然后将其添加到列表中。