python实现水仙花数、玫瑰数

水仙花数
是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^ 3 + 5^ 3+ 3^3 = 153
四叶玫瑰数
是指四位数各位上的数字的四次方之和等于本身的数
例如 :1^ 4 + 6^ 4 + 3^ 4 + 4^4 = 1634

代码实现

# 给定一个数字N,代表N位的数, 且指数为N
# 当N为3时,有1^3 + 5^3 + 3^3 = 153
# 当N为4时,有1^4 + 6^4 + 3^4 + 4^4 = 1634

import math

N = int(input())
# 根据数字N,产生一个N位数
for k in range(int(math.pow(10,N-1)),int(math.pow(10,N))):
    ssm = 0
    x = k
    ls = []
    # 给每一位数进行分解
    while x:
        res = x % 10
        x = x // 10
        # 保存每一位数
        ls.append(res)
        ssm += math.pow(res,N)
    if int(ssm) == k:
        ls.reverse()
        # 输出过程
        sa = str("^"+str(N)+" + ").join(list(map(str,ls)))
        sa += "^"+str(N)
        print("{:s} = {:d}".format(sa,int(ssm)))


测试1:

4
1^4 + 6^4 + 3^4 + 4^4 = 1634
8^4 + 2^4 + 0^4 + 8^4 = 8208
9^4 + 4^4 + 7^4 + 4^4 = 9474

测试2:

3
1^3 + 5^3 + 3^3 = 153
3^3 + 7^3 + 0^3 = 370
3^3 + 7^3 + 1^3 = 371
4^3 + 0^3 + 7^3 = 407
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值