Python语言,如何计算水仙花数,所谓水仙花数,就是这个数字的每一位的3次方,等于这个数字本身,比如说152就是水仙花数,怎么计算的
基于Monster 组和GPT的调写:
首先,要指出一点,数字152不是一个水仙花数。水仙花数的定义是一个n位正整数,其每个位上的数字的n次幂之和等于它本身。例如,153是一个3位数,而153=1^3+5^3+3^3,所以153是一个水仙花数。
以下是一个Python函数,它可以检查一个给定的三位数是否是一个水仙花数:
def is_narcissistic(number):
return number == sum(int(digit) ** 3 for digit in str(number))
# 测试一下看看153是否是水仙花数
print(is_narcissistic(153)) # 应该打印出True
要找到所有的三位水仙花数,你可以使用一个简单的循环:
for i in range(100, 1000):
if is_narcissistic(i):
print(i)
这将打印出所有的三位水仙花数。
如果你想找到所有的n位水仙花数,你可以稍微修改一下上面的函数:
def is_narcissistic(number):
n = len(str(number))
return number == sum(int(digit) ** n for digit in str(number))
# 找出所有的4位水仙花数
for i in range(1000, 10000):
if is_narcissistic(i):
print(i)
这将打印出所有的四位水仙花数。
我的这篇博文里面有,代码有注释:Python算法:数论问题_创意程序员的博客-CSDN博客
可以使用以下代码计算水仙花数:
for i in range(100, 1000):
# 将数字转换为字符串,然后分别取出每一位数字
num_str = str(i)
a = int(num_str[0])
b = int(num_str[1])
c = int(num_str[2])
# 判断是否为水仙花数
if i == a**3 + b**3 + c**3:
print(i)
这段代码从100到999遍历每个数字,将其转换为字符串,然后分别取出每一位数字,计算每一位数字的3次方之和,判断是否等于原数字。如果等于,则输出该数字。
执行结果:
#判断水仙花数
num=int(input("请输入一个三位数:"))
bw=int(num/100)
gw=int(num%100/10)
sw=int(num%100%10)
total=bw**3+gw**3+sw**3
if total==num:
print(str(num)+"是水仙花数")
else:
print(str(num)+"不是水仙花数")
#输出水仙花数
print("水仙花数有:")
for i in range(100,1000):
a=int(i/100)
b=int(i%100/10)
c=int(i%100%10)
if i==a**3+b**3+c**3:
print(i)
i=i+1
input("请按回车键退出")