Python教程-Python中的阶乘和数
在本教程中,我们将学习一个Python程序,用于判断给定的数字是否是阶乘和数。
什么是阶乘和数?
强数是一种特殊的数,其所有数字的阶乘之和应等于该数字本身。
要判断给定的数字是否是阶乘和数,我们需要从给定的数字中提取每个数字并找到其阶乘,然后对数字的每个位数都这样操作。
一旦我们得到了所有位数的阶乘,然后将它们相加。如果和等于给定的数字,那么这个给定的数字就是阶乘和数,否则不是。
例如 - 给定的数字是145,我们需要提取每个数字并找到阶乘,1! = 1,4! = 24,5! = 120。
现在,我们将这些阶乘相加,得到1+24+120 = 145,这恰好等于给定的数字。所以我们可以说145是一个强数。
我们已经理解了强数的逻辑。现在让我们使用Python程序来实现它。
问题解决方法
Ask the user to enter an integer number.
Find the factorial of each digit in the number using the two while loop.
Now, sum up all the factorial number.
Check if it is equal to the given number.
Print the Output.
Exit
Sample Input: num = 132
Sample Output: Given number is not a strong number
Explanation: 1! + 3! + 2! = 9 which is not equal to the 132
Sample Input: num = 145
Sample Output: Given number is a strong number.
Python程序以查找强数
以下是用于打印给定数字是否是强数的Python程序的代码。
示例 -
# Variable to store sum of the numbers
sum=0
# Ask user to enter the number
num=int(input("Enter a number:"))
# temporary variable store copy of the original number
temp=num
# Using while loop
while(num):
# intialize with 1
i=1
# fact variable with 1
fact=1
rem=num%10
while(i<=rem):
fact=fact*i # Find factorial of each number
i=i+1
sum=sum+fact
num=num//10
if(sum==temp):
print("Given number is a strong number")
else:
print("Given number is not a strong number")
输出:
Enter a number: 145
Given number is a strong number.
解释:
在上面的代码中,
- 我们声明了一个整数值为num的变量来输入数字。
- 将sum变量初始化为零。
- 一个副本的num值存储在temp变量中。
- 在第一个while循环中,确保给定数字大于0。
- 在while循环内部,拆分数字并将变量赋值给找到每个数字的阶乘。
- 在第二个while循环中(嵌套的while循环),找到每个数字的阶乘。
假设用户输入值=145,sum=0
分配初始值
i = 0
fact = 0
temp = num
temp = 145
现在理解循环迭代。第一次迭代
rem = temp % 10
rem = 145 % 10 = 5
现在,我们进入嵌套的while循环。它计算5的阶乘为120。
sum = sum + 120> 0+120
sum = 120
temp = temp//10 = 14
temp = 14
第二次迭代
temp = 14,
sum = 120
rem = 14 % 10 = 4
现在,它进入嵌套的while循环。在这里,它计算4的阶乘= 24。
sum = 120 + 24
sum = 144
temp = 14//10
temp = 1
第三次迭代
temp = 1
sum = 144
rem = 1 % 10 = 0
1的阶乘是1
sum = 144 + 1
sum = 145
temp = 1 / 10
temp = 0
在这里,temp = 0,所以while循环条件失败。
如果(num == sum),现在,我们检查用户输入的数字是否与sum相等。如果此条件返回True,则它是强数,否则它不是强数。
我们已经完成了使用while循环的程序。我们也可以使用for循环来判断给定的数字是否是强数。
使用for循环查找强数
我们也可以使用for循环找到强数。逻辑与上面的程序相同,只是将while循环替换为for循环。
示例 -
# Python Program to find Strong Number
num = int(input(" Enter the Number:"))
sum = 0
temp = num
while(temp > 0):
fact = 1
rem = temp % 10
for i in range(1, rem + 1):
fact = fact * i
print("Factorial of %d = %d" %(rem, fact))
sum = sum + fact
temp = temp // 10
print("\n Sum of Factorials of a Given Number %d = %d" %(num, sum))
if (sum == num):
print(" The given number is a Strong Number")
else:
print(" The given number is not a Strong Number")
输出:
Enter the Number:145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1
Sum of Factorials of a Given Number 145 = 145
The given number is a Strong Number
使用阶乘函数查找强数的Python程序
Python math模块提供了内置的math模块。通过使用这个方法,我们可以省略嵌套的while循环的使用。
示例 -
# Python Program to find Strong Number
import math
num = int(input(" Enter the Number:"))
sum = 0
temp = num
while(temp > 0):
rem = temp % 10
fact = math.factorial(rem) # Using the buitlt-in factorial() function
print("Factorial of %d = %d" %(rem, fact))
sum = sum + fact
temp = temp // 10
print("\n Sum of Factorials of a Given Number %d = %d" %(num, sum))
if (sum == num):
print(" The given number is a Strong Number")
else:
print(" The given number is not a Strong Number")
输出:
Enter the Number: 145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1
Sum of Factorials of a Given Number 145 = 145
The given number is a Strong Number
解释:
在上面的代码中,
- 我们使用了factorial()函数,并将余数作为参数传递。
- 在while循环的第一次迭代中,它返回了余数5,并传递给了5的阶乘。
- 它将继续,直到temp值大于零。我们不需要使用另一个while循环。