Python中的强数
在本教程中,我们将学习一个Python程序来判断给定的数字是否是强数。
什么是强数
强数是一种特殊的数字,它的所有位数的阶乘之和应该等于该数字本身。
要判断给定的数字是否是强数,我们从给定的数字中选取每个位数并计算其阶乘,然后对数字的每个位数都进行这个操作。
一旦我们得到了所有位数的阶乘,然后将它们相加。如果相加结果等于给定的数字,则该数字是一个强数,否则不是。
例如 – 给定的数字是145,我们需要选取每个位数并计算其阶乘 1! = 1, 4! = 24和5! = 120。
现在,我们将计算阶乘之和,得到1+24+120= 145,这与给定的数字完全相同。所以我们可以说145是一个强数。
我们已经掌握了强数的逻辑。现在用Python程序来实现它。
解决方案:
- 向用户询问输入一个整数。
- 使用两个while循环计算该数字中每个位数的阶乘。
- 现在,将所有的阶乘数字相加。
- 检查是否与给定的数字相等。
- 输出。
- 退出。
示例输入: num = 132
示例输出: 给定的数字不是一个强数。
解释: 1! + 3! + 2! = 9,不等于132。
示例输入: num = 145
示例输出: 给定的数字是一个强数。
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 来输入一个数字。
- 将和变量定义为零。
- 将num的副本值赋给临时变量。
- 在第一个 while循环 中,确保给定的数字大于0。
- 在while循环中,拆分数字并将变量分配给查找每个数字的阶乘。
- 在第二个while循环(嵌套while循环)中,找到每个数字的阶乘。
假设用户输入值为145,和为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
)现在,我们检查用户输入的数是否与总和完全相等的条件。如果这个条件返回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的阶乘函数。
- 它会一直进行下去,直到临时值大于零。我们不需要使用另一个while循环。