首页 > 解决方案 > 有没有办法让这个反向阶乘代码更有效地运行

问题描述

我刚刚开始学习python并制作了一个程序,它根据阶乘计算阶乘数。

例如,如果我给程序数字 120,它会告诉我它的阶乘是 5

无论如何,我的问题是如何使这段代码更高效、更快。

Num = int(input())
i=0

for i in range(0,Num):
  i = i + 1
  x = Num/i
  Num = x
  if (x==1):
      print(i)






标签: pythonpython-3.x

解决方案


乘法比除法快得多。您应该尝试使用阶乘而不是迭代地划分它:

def unfactorial(n):
    f,i = 1,1
    while f < n:
        i += 1
        f *= i
    return i if f == n else None


unfactorial(120) # 5

推荐阅读