如何在Python 3中检查给定数字是不是是阶乘[关闭]

     2023-02-23     245

关键词:

【中文标题】如何在Python 3中检查给定数字是不是是阶乘[关闭]【英文标题】:How to check if a given number is a factorial or not in Python 3 [closed]如何在Python 3中检查给定数字是否是阶乘[关闭] 【发布时间】:2020-01-28 21:33:37 【问题描述】:

例如 24,是一个阶乘,因为:

 4 * 3 * 2 * 1 = 24

代码应将 24 作为输入,输出(见下文)是否为阶乘。

    return "is a factorial."
else:
    return "is not a factorial."
print("The number " + str(24) + " " + str(isFactorial(24)))

【问题讨论】:

到目前为止你有什么尝试? 【参考方案1】:

我向你推荐 2 个解决方案:

def check_fact(n):
    i = fact = 1
    while fact<n:
        i += 1
        fact *= i
    return fact==n

def check_fact_opt(n):
    i = 1
    while n>1:
        if n % i == 0:
            n /= i
        else:
            break
        i+=1
    return n<=1

两种解决方法都产生相同的结果并且都解决了您的问题,但后者的迭代次数要少得多:

        N          is_fact     n_it  is_fact_opt  n_it_opt
2               |   True    |   1   |   True    |   1   
6               |   True    |   2   |   True    |   2   
24              |   True    |   3   |   True    |   3   
50              |   False   |   4   |   False   |   2   
100             |   False   |   4   |   False   |   2   
120             |   True    |   4   |   True    |   4   
200             |   False   |   5   |   False   |   2   
500             |   False   |   5   |   False   |   2   
1000            |   False   |   6   |   False   |   2   
5040            |   True    |   6   |   True    |   6   
100000          |   False   |   8   |   False   |   2   
3628800         |   True    |   9   |   True    |   9   
3628801         |   False   |   10  |   False   |   1   
100000000000    |   False   |   14  |   False   |   2   

【讨论】:

【参考方案2】:

最简单的方法就是让它倒过来。生成阶乘,直到你找到它。这样一来,您肯定会始终比较整数:

def is_factorial(n):
    i = f = 1
    while f < n:
        i += 1
        f *= i
    return f == n

【讨论】:

【参考方案3】:

最简单的方法是在这样的数组中排序大量阶乘数的现成列表

 List: 1, 2, 6, 24, 120, ...

然后搜索此列表以查看您的号码是否有效 我建议使用二进制搜索,因为列表是排序的。

阶乘列表Link

【讨论】:

【参考方案4】:

(未经测试,匆匆写下)

def isfac(n):
    i = 2
    while n > 1:
        n = n / i
        i = i + 1
    return n == 1

【讨论】:

@CalebGoodman 这个帖子没有回答。但是,它确实会比较 float 对象是否完全相等。

在 Python 中使用 Reduce 函数查找阶乘

】在Python中使用Reduce函数查找阶乘【英文标题】:UsingReduceFunctioninPythonToFindFactorial【发布时间】:2014-11-2622:46:40【问题描述】:您好,我正在尝试编写一个函数来查找任何给定数字的阶乘。例如,对于阶乘(6),我会得到6*5*3*2*1的... 查看详情

如何在Python中检查一个数字是不是有下标?

】如何在Python中检查一个数字是不是有下标?【英文标题】:HowtocheckifanumberhassubscriptinitinPython?如何在Python中检查一个数字是否有下标?【发布时间】:2022-01-2404:35:58【问题描述】:我有一个类似的字符串:t=\'²\'这会抛出我的... 查看详情

如何检查列表中的项目是不是是python中任意数字的幂?

】如何检查列表中的项目是不是是python中任意数字的幂?【英文标题】:howtocheckifitemsinlistarepowerofanynumberinpython?如何检查列表中的项目是否是python中任意数字的幂?【发布时间】:2017-03-1611:05:12【问题描述】:我什至不知道如何... 查看详情

如何检查我的 python 对象是不是为数字? [复制]

】如何检查我的python对象是不是为数字?[复制]【英文标题】:HowcanIcheckifmypythonobjectisanumber?[duplicate]如何检查我的python对象是否为数字?[复制]【发布时间】:2011-05-1009:17:31【问题描述】:在Java中,数字类型都来自Number,所以我... 查看详情

如何检查切片是不是在 Go 中具有给定索引?

】如何检查切片是不是在Go中具有给定索引?【英文标题】:HowtocheckifaslicehasagivenindexinGo?如何检查切片是否在Go中具有给定索引?【发布时间】:2015-01-3020:39:43【问题描述】:我们可以通过地图轻松做到这一点:item,ok:=myMap["index"... 查看详情

Python - 如何在列表中查找不是最小值的数字

】Python-如何在列表中查找不是最小值的数字【英文标题】:Python-howtofindnumbersinalistwhicharenottheminimum【发布时间】:2013-08-1211:30:04【问题描述】:我有一个列表S=[a[n],b[n],c[n]],对于n=0,列表S的最小值是\'a\'。鉴于我知道最小值,... 查看详情

jquery检查数字是不是在列表中[重复]

】jquery检查数字是不是在列表中[重复]【英文标题】:jquerycheckifnumberisinalist[duplicate]jquery检查数字是否在列表中[重复]【发布时间】:2013-07-2916:06:17【问题描述】:我必须检查一个变量是否等于给定的数字或另一个。例如,我现... 查看详情

给定一个数字,检查数字是不是形成一个加法方程?

】给定一个数字,检查数字是不是形成一个加法方程?【英文标题】:Givenanumbercheckifdigitsformanequationwithaddition?给定一个数字,检查数字是否形成一个加法方程?【发布时间】:2014-03-1719:38:26【问题描述】:给定一个字符串S,我... 查看详情

如何在javascript中检查两个数字是不是相等[重复]

】如何在javascript中检查两个数字是不是相等[重复]【英文标题】:Howtocheckiftwonumbersareequalinjavascript[duplicate]如何在javascript中检查两个数字是否相等[重复]【发布时间】:2019-07-2711:40:48【问题描述】:假设我们有一个数组:letarr=[10... 查看详情

在python中检查字符串是不是为数字[重复]

】在python中检查字符串是不是为数字[重复]【英文标题】:checkingstringisnumberornotinpython[duplicate]在python中检查字符串是否为数字[重复]【发布时间】:2014-02-2208:31:03【问题描述】:以下哪项是检查字符串是否可以表示为数字的最佳... 查看详情

如何检查给定的字符串是不是是真实单词?

】如何检查给定的字符串是不是是真实单词?【英文标题】:HowcanIcheckifastringgivenisarealword?如何检查给定的字符串是否是真实单词?【发布时间】:2017-07-0302:51:41【问题描述】:我正在制作一个在VisualBasic中解决字谜的程序。如... 查看详情

检查python列表中是不是已经存在一个数字

】检查python列表中是不是已经存在一个数字【英文标题】:checkifanumberalreadyexistinalistinpython检查python列表中是否已经存在一个数字【发布时间】:2013-01-1800:30:56【问题描述】:我正在编写一个python程序,我将在其中将数字附加到... 查看详情

如何检查文件是不是是Python中的符号链接?

】如何检查文件是不是是Python中的符号链接?【英文标题】:HowtocheckiffileisasymlinkinPython?如何检查文件是否是Python中的符号链接?【发布时间】:2012-06-1913:42:25【问题描述】:在Python中,是否有检查给定文件/目录是否为符号链接... 查看详情

如何检查数字是不是可以被另一个Python整除

】如何检查数字是不是可以被另一个Python整除【英文标题】:HowtocheckifthenumberisdivisiblebyanotheronePython如何检查数字是否可以被另一个Python整除【发布时间】:2019-08-3112:51:47【问题描述】:我遇到了一个问题,当我需要检查ff是否... 查看详情

如何检查数组中的数字是不是相等?

】如何检查数组中的数字是不是相等?【英文标题】:Howtocheckifnumbersinarrayequal?如何检查数组中的数字是否相等?【发布时间】:2013-12-2117:18:48【问题描述】:如何检查数组中的数字是否相等?我有一个包含10个数字的数组,我... 查看详情

因子在c中使用递归(代码片段)

...n(n*fact(n-1));但是我不清楚的是内在的事情是怎么发生的?如何计算5*4*3*2*1(如果n为5)请对此作出明确解释。谢谢.....答案在数学上,阶乘的递归定义可以像这样递归地表达(来自Wikipedia):考虑一下n=3是如何工作的,使用==来表... 查看详情

如何检查给定值是不是是私有路由中的 JWT?

】如何检查给定值是不是是私有路由中的JWT?【英文标题】:HowtocheckthatagivenvalueisaJWTinaprivateroute?如何检查给定值是否是私有路由中的JWT?【发布时间】:2020-07-1012:46:02【问题描述】:目前我有以下用于私有路由的React组件importRo... 查看详情

如何检查给定列表是不是是 GORM 中字段值的子集?

】如何检查给定列表是不是是GORM中字段值的子集?【英文标题】:HowdoIcheckifagivenlistisasubsetofafieldvalueinGORM?如何检查给定列表是否是GORM中字段值的子集?【发布时间】:2016-02-2419:31:34【问题描述】:我正在开发某种带有可变字段... 查看详情