python - 有没有办法让这个反向阶乘代码更有效地运行
问题描述
我刚刚开始学习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)
解决方案
乘法比除法快得多。您应该尝试使用阶乘而不是迭代地划分它:
def unfactorial(n):
f,i = 1,1
while f < n:
i += 1
f *= i
return i if f == n else None
unfactorial(120) # 5
推荐阅读
- r - 在 ggplot 中制作分组箱线图时出错
- typescript - 如何使函数的第二个参数的类型取决于第一个参数的值和映射中的条目
- c - 打印取消引用的值会引发警告
- android - 内部:Android 中的帧处理程序出错
- java - 如何使用 LiveData ViewModel 进行文件存储
- django - 为什么 mu 用户模型会引发类似 filter_horizontal 的错误
- django - 登录后 Django Rest Framework 要求身份验证
- php - 在 Heroku 上进行异步 Artisan::call
- python - 我应该对这些数据点使用哪种插值?
- r - 按包含数字数据和时间戳的多列排序