Python程序在给定列表中查找所有强数字
给定一个列表,编写一个Python程序来查找给定数字列表中的所有强数字。
强数是等于其数字的阶乘之和的数字。
例子:
Input : [1, 2, 5, 145, 654, 34]
Output : [1, 2, 145]
Input : [15, 58, 75, 675, 145, 2]
Output : [145, 2]
解释 :
- 我们在这里定义了 2 个函数:第一个是
factorial()
,第二个是strong_number()
。 - 一旦调用了
strong_number()
,列表就会传递给函数并存储在形式参数列表中。 - For 循环迭代列表中的每个元素,
temp
是一个临时变量,对其进行计算,然后在temp mod 10的其余部分调用factorial()
函数并将其传递给factorial
函数。 - 现在当
temp
等于 0 时,它退出 while 循环并检查 sum 是否等于 x。如果为True ,则使用append()
函数将其添加到列表中,该函数为列表预定义并用于在列表中添加元素,如果没有强数字,则它将返回一个空列表。
下面是Python的实现:
# Python program to find all
# Strong Numbers in given list
def factorial(number):
if(number == 0 or number == 1):
fact = 1
else:
fact = number * factorial(number - 1)
return fact
def strong_number(list):
new_list =[]
for x in list:
temp = x
sum = 0
while(temp):
rem = temp % 10
sum += factorial(rem)
temp = temp // 10
if(sum == x):
new_list.append(x)
else:
pass
return new_list
# Driver Code
val_list = [1, 2, 5, 145, 654, 34]
strong_num_list = strong_number(val_list)
print(strong_num_list)
输出:
[1, 2, 145]