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

pythonserver side programmingprogramming更新于 2024/1/5 3:02:00

如果找到某个数字的各个数字的阶乘并将其相加,计算出的总和等于该数字本身,则该数字被称为强数。在这篇 Python 文章中,我们通过三个不同示例给出了查找列表中存在的强数的不同方法。在示例 1 中,使用包含预先计算的数字阶乘的列表来计算数字中所有现有数字的阶乘之和,同时检查所选数字是否强。在示例 2 中,使用函数计算从 0 到 9 的所有数字的阶乘并将其存储在列表中,然后使用此列表计算数字中所有数字的阶乘之和,同时检查该数字是否强。在示例 3 中,被检查数字的数字被分开,计算它们的阶乘并将其相加,而无需使用单独的阶乘列表。

示例 1 - 在此过程中,使用单独的预先计算的各个数字阶乘列表打印给定列表中的所有 Strong 数字

算法

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

步骤 2 − 制作一个单独的列表,其中包含从 0 到 9 的数字的预先计算的阶乘。

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

步骤 4 − 将这些阶乘的总和相加。如果数字等于总和,则打印该数字。

步骤 5 − 运行程序,然后检查结果。

Python 文件包含此

list1=[300, 40585, 500, 460, 3, 2, 89, 1, 145, 260, 630]
print("示例列表: ", list1)
#包含从 1 到 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 文件。

示例列表:[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 - 指定一个整数列表。确保此示例列表至少有一个强数字。创建一个名为 numType 的函数来检查该数字是否强。

步骤 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)

查看结果

打开 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 − 创建一个整数列表。确保此示例列表至少有一个 Strong 数字。

步骤 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)

查看结果

打开 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 文章中,我们通过三个不同的例子,给出了从给定的整数列表中查找 Strong 数的方法。在示例 1 中,该方法使用预先计算的阶乘列表来计算各个数字的阶乘,然后计算它们的和。在示例 2 中,不使用预先计算的列表,而是使用计算阶乘的函数来生成阶乘列表。在示例 1 和示例 2 中,都使用数字的字符串形式来查找各个数字。在示例 3 中,使用除法并求余数的方法将数字分开,然后计算它们的阶乘并将其相加。


相关文章