python水仙花数的查找

python查找水仙花数字

问题:输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。


# 水仙花数的查找(python)
list_hua = []
number = int(input("请输入数字:"))
# 遍历0-指定内的数字范围
for i in range(number):
    # 转化为字符串形式进行切割分析
    number_str = str(i)
    # 存储多位数字位数,例如:123存到列表中["1","2","3"]
    list_ele = []
    # 遍历每一个数字转化的字符串
    for ele in number_str:
        # 添加到存储的list_ele中,产生每一位数字,添加到列表中
        list_ele.append(ele)
        # sum为存储数字i对应的每一位的3次方和
        sum = 0
        # 遍历存储数字中每一位数,例如["1","2","3"],将它们转化为int类型,进行3次方
        for list_ele_number_str in list_ele:
            list_ele_number_str = int(list_ele_number_str)**3
            # 存储数字的每一位上对应的三次方的和
            sum += list_ele_number_str
        # 判断这个数的位数三次方的和与自身是否相等(水仙花数)
        if sum == i:
            list_hua.append(i)
print(list_hua)


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是 Python 代码来查找水仙花数: ``` for num in range(100, 1000): # 分离出每一位数字 unit_digit = num % 10 tens_digit = (num // 10) % 10 hundreds_digit = num // 100 # 计算每一位数字的立方和 sum_of_cubes = unit_digit ** 3 + tens_digit ** 3 + hundreds_digit ** 3 # 如果立方和等于原数,说明这是一个水仙花数 if num == sum_of_cubes: print(num) ``` 这段代码会在 `100` 到 `1000` 之间枚举每一个数,然后检查它是否是水仙花数。如果是,则会将其打印出来。 ### 回答2: 水仙花数也被称为阿姆斯特朗数,是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。 Python代码如下: ```python def narcissistic_number(n): result = [] for i in range(10**(n-1), 10**n): sum = 0 temp = i while temp > 0: digit = temp % 10 sum += digit ** n temp //= 10 if i == sum: result.append(i) return result n = int(input("请输入位数n(n≥3):")) numbers = narcissistic_number(n) print(f"{n}位水仙花数有:{numbers}") ``` 以上代码首先定义了一个名为`narcissistic_number`的函数,它接受一个参数n,表示位数。函数中首先创建一个空列表`result`,用于存储找到的水仙花数。 接下来,使用`for`循环遍历从10的(n-1)次方到10的n次方之间的所有数字。在每一次循环中,定义一个变量`sum`用于存储每个数字每个位上的n次幂之和,同时创建一个临时变量`temp`用于处理当前数字。 使用`while`循环,取出`temp`的个位数字,计算该数字的n次幂,并累加到`sum`中。然后将`temp`除以10,去掉个位数以便处理下一位。 最后,判断当前数字和`sum`是否相等,若相等则表示该数字是水仙花数,将其添加到`result`列表中。 最后,通过输入获取位数n的值,并调用`narcissistic_number`函数得到结果,并打印输出。 ### 回答3: 水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,1^3 + 5^3 + 3^3 = 153,所以153是一个水仙花数。 下面是Python代码实现找出n位水仙花数的过程: ```python def find_narcissistic_numbers(n): result = [] for num in range(10**(n-1), 10**n): sum = 0 temp = num while temp > 0: digit = temp % 10 sum += digit ** n temp //= 10 if sum == num: result.append(num) return result n = int(input("请输入位数:")) narcissistic_numbers = find_narcissistic_numbers(n) print(f"{n}位的水仙花数为:{narcissistic_numbers}") ``` 这段代码首先定义了一个`find_narcissistic_numbers`函数,该函数接受一个参数n,表示水仙花数的位数。函数返回所有满足条件的n位水仙花数的列表。 函数内部使用一个循环,遍历所有n位数。对于每一个数字,采用while循环计算每一位数字的n次幂之和。循环结束后,判断计算得到的和sum是否等于这个数字本身,如果等于,就将该数字添加到结果列表中。 在主程序中,用户输入所需的位数n,然后调用`find_narcissistic_numbers`函数,将结果打印输出。 这段代码实现了找出指定位数的水仙花数,并且可以根据用户的输入显示结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值