Python程序打印给定列表中所有强数


如果一个数的各位数字的阶乘之和等于该数本身,则称该数为强数。在这篇Python文章中,我们将通过三个不同的例子,介绍在列表中查找强数的不同方法。在示例1中,我们使用一个包含预先计算好的数字阶乘的列表来计算一个数中所有数字的阶乘之和,然后检查该数是否为强数。在示例2中,我们使用一个函数计算0到9所有数字的阶乘,并将它们存储在一个列表中,然后使用该列表计算一个数中所有数字的阶乘之和,并检查该数是否为强数。在示例3中,我们直接从待检查的数中分离出各个数字,计算它们的阶乘并将其加在一起,无需使用单独的阶乘列表。

示例1 - 使用预先计算好的各个数字阶乘的单独列表打印给定列表中的所有强数

算法

步骤1 - 获取一个整数列表。确保此测试列表至少包含一个强数。创建一个名为numType的函数来检查数字是否为强数。

步骤2 - 创建一个单独的列表,其中包含0到9的预先计算好的阶乘。

步骤3 - 对于测试列表中的每个数字,使用numType函数,首先分离该数字的各位数字,然后从阶乘列表中选择预先计算好的阶乘。

步骤4 - 将这些阶乘的和加起来。如果该数等于总和,则打印该数。

步骤5 - 运行程序并检查结果。

Python文件包含这些内容

Open Compiler
list1=[300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630] print("Sample List: ", list1) #List having listoffactorials of numbers from 1 to 9 listoffactorials = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880] def numType(num): numstr = str(num) sum=0 for digit in numstr: sum += listoffactorials[int(digit)] if sum == num: return "isStrong" else: return "notStrong" for item in list1: if (numType(item) == "isStrong"): print("Strong Number: ", item)

查看结果

要查看结果,请在cmd窗口中运行Python文件。

Sample List:  [300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630]
Strong Number:  40585
Strong Number:  2
Strong Number:  1
Strong Number:  145

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

示例2:通过使用函数计算各个数字的阶乘并创建它们的单独列表,打印给定列表中的所有强数

算法

步骤1 - 指定一个整数列表。确保此示例列表至少包含一个强数。创建一个名为numType的函数来检查数字是否为强数。

步骤2 - 创建一个calcFactorial()函数,并对0到9的数字调用它,创建一个单独的列表,其中包含0到9的数字的阶乘。

步骤3 - 对于测试列表中的每个数字,使用numType函数,首先分离该数字的各位数字,然后从阶乘列表中选择计算出的阶乘。使用数字的字符串形式来分离数字,然后将其转换回整数。

步骤4 - 将这些阶乘的和加起来。如果该数等于总和,则打印该强数。

步骤5 - 运行程序并检查结果。

Python文件包含这些内容

Open Compiler
listoffactorials=[] def calcFactorial(num): factorial=1 if num < 0: print("Error, the number is negative") elif num > 0: for item in range(1 , num + 1): factorial = factorial*item return factorial else: return 1 for item in range(0, 10): listoffactorials.append(calcFactorial(item)) print("Calculated digits factorial list:", listoffactorials) def numType(num): numstr = str(num) sum=0 for digit in numstr: sum += listoffactorials[int(digit)] if sum == num: return "isStrong" else: return "notStrong" list1=[300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630] print("Sample List: ", list1) for item in list1: if (numType(item) == "isStrong"): print("Strong Number: ", item)

查看结果

打开cmd窗口并运行python文件以查看结果。

Calculated digits factorial list: [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
Sample List:  [300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630]
Strong Number:  40585
Strong Number:  2
Strong Number:  1
Strong Number:  145   

示例3:在过程中不使用单独的各个数字阶乘列表打印给定列表中的所有强数

算法

步骤1 - 创建一个整数列表。确保此示例列表至少包含一个强数。

步骤2 - 创建一个calcFactorial()函数来计算指定数字的阶乘。

步骤3 - 对于测试列表中的每个数字,首先分离该数字的各位数字,并计算其阶乘。然后将此阶乘添加到总和中。使用数字的整数形式通过除以十和检查余数来分离数字。

步骤4 - 检查该数是否等于总和,然后打印该强数。

步骤5 - 运行程序并检查结果。

Python文件包含这些内容

Open Compiler
list1=[300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630] print("Sample List: ", list1) def calcFactorial(num): factorial=1 if num < 0: print("Error, the number is negative") elif num > 0: for item in range(1 , num + 1): factorial = factorial*item return factorial else: return 1 for item in list1: tempItem = item total = 0 while(tempItem): rem = tempItem % 10 total += calcFactorial(rem) tempItem = tempItem // 10 if(total == item): print("Strong Number: ", item) else: print("Not a Strong Number: ", item)

查看结果

打开cmd窗口并运行python文件以查看结果。

Sample List:  [300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630]
Not a Strong Number:  300
Strong Number:  40585
Not a Strong Number:  500
Not a Strong Number:  460
Not a Strong Number:  3
Strong Number:  2
Not a Strong Number:  89
Strong Number:  1
Strong Number:  145
Not a Strong Number:  260
Not a Strong Number:  630 

在这篇Python文章中,我们通过三个不同的例子,介绍了从给定的整数列表中查找强数的方法。在示例1中,该方法使用预先计算好的阶乘列表来计算各个数字的阶乘及其和。在示例2中,我们没有使用预先计算好的列表,而是使用一个函数来计算阶乘列表。在示例1和2中,都使用了数字的字符串形式来查找各个数字。在示例3中,我们使用除法取余的方法分离数字,然后计算它们的阶乘并将其加在一起。

更新于:2023年8月8日

217 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告