Python 在给定的列表中打印所有强数
如果一个数字的各个位数的阶乘相加等于该数字本身,则称其为强数。在这篇Python文章中,使用三个不同的示例来说明如何在列表中查找强数。示例1中,使用包含预先计算的数字的阶乘的列表来计算数字中所有位数的阶乘之和,同时检查选定的数字是否为强数。在示例2中,使用函数计算0到9之间所有数字的阶乘,并将其存储在一个列表中,然后使用该列表计算数字中所有数字的阶乘之和,同时检查数字是否为强数。在示例3中,将要检查的数字的位数分开计算其阶乘并相加,而不使用单独的阶乘列表。
示例1 – 使用单独的预先计算数字的阶乘列表打印给定列表中的所有强数
步骤
步骤1 - 获取一个整数列表。确保该测试列表至少有一个强数。创建一个名为numType的函数来检查数字是否为强数。
步骤2 - 创建一个单独的预先计算的数字0到9的阶乘列表。
步骤3 - 对于测试列表中的每个数字,使用numType函数首先分离该数字的各个位数,并从阶乘列表中选择预先计算的阶乘。
步骤4 - 将这些阶乘的总和相加。如果数字等于总和,则打印该数字。
步骤5 - 运行程序,然后检查结果。
Python文件包含如下内容
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)
查看结果
要查看结果,请在命令行窗口中运行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
示例2:通过使用函数计算各个数字的阶乘并创建单独的列表,在给定列表中打印所有Strong数。
步骤
步骤1 - 指定一个整数列表。确保此示例列表至少有一个Strong数。创建一个名为numType的函数来检查数字是否是Strong数。
步骤2 - 创建一个名为calcFactorial()的函数,并为数字0到9调用它,创建数字0到9的阶乘单独的列表。
步骤3 - 对测试列表中的每个数字,使用numType函数,首先将该数字的各个数字分开,并从阶乘列表中选择计算出的阶乘。使用数字形式的字符串来分离数字,然后将其更改回整数。
步骤4 - 将这些阶乘的总和相加。如果该数字等于总和,则打印该Strong数。
步骤5 - 运行程序,然后检查结果。
Python文件包含如下内容
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)
查看结果
打开命令提示窗口并运行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文件中包含以下内容
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)
查看结果
打开命令行窗口并运行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中,使用除法和取余数的方法来分离数字,然后计算它们的阶乘并相加。