我刚刚开始学习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)发布于 2020-02-14 05:26:45
乘法比除法快得多。你应该尝试用阶乘来达到这个数字,而不是迭代地除以它:
def unfactorial(n):
f,i = 1,1
while f < n:
i += 1
f *= i
return i if f == n else None
unfactorial(120) # 5发布于 2020-02-14 05:00:58
以下是您可以做的几件事:
Num = int(input())
i=0 # your for loop will initialize i, you don't need to do this here
for i in range(0,Num):
i = i + 1 # your for loop will increment i, no need to do this either
x = Num/i # you don't need the extra variable 'x' here
Num = x
if (x==1):
print(i)您可以重写此代码,如下所示:
for index in range(1, number): # start range at 1
number /= index # this means; number = number / index
if number==1:
return index发布于 2020-02-14 05:01:07
按升序计算阶乘,直到达到(或超过)您正在寻找的阶乘,使用前一个阶乘有效地计算下一个阶乘。
https://stackoverflow.com/questions/60216256
复制相似问题