Python语言,如何计算水仙花数

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次方之和,判断是否等于原数字。如果等于,则输出该数字。

执行结果:

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7738825
  • 这篇博客你也可以参考下:python 输入一个数,判断是不是水仙花数
  • 除此之外, 这篇博客: 用Python输出水仙花数中的 水仙花数:一个数字各位上的数字的三次方之和等于它本身,则这个数是水仙花数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #判断水仙花数
    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("请按回车键退出")