python123题目——自幂数

自幂数

类型:字符串

描述

自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身,例如:1**3 + 5**3 + 3**3 = 153,编程寻找并输出 n 位的自幂数,n 由用户输入,每行输出一个数字。

  1. n为1时,自幂数称为独身数。显然,0,1,2,3, 4,5,6,7,8,9都是自幂数。
  2. n为2时,没有自幂数。
  3. n为3时,自幂数称为水仙花数,有4个
  4. n为4时,自幂数称为四叶玫瑰数,共有3个
  5. n为5时,自幂数称为五角星数,共有3个
  6. n为6时,自幂数称为六合数, 只有1个
  7. n为7时,自幂数称为北斗七星数, 共有4个
  8. n为8时,自幂数称为八仙数, 共有3个
  9. n为9时,自幂数称为九九重阳数,共有4个
  10. n为10时,自幂数称为十全十美数,只有1个

输入格式

输入一个大于或等于 3 且小于 7 的正整数 n

输出格式

按从小到大的顺序输出 n 位的自幂数,每行一个数

示例 1

输入:
4        
输出: 
1634 
8208 
9474

参考代码

def armstrong_number(num):
    """接受一个正整数为参数,判断是否是自幂数,返回布尔值"""
    total,tmp = 0,num
    while tmp != 0:
        total = total + table[tmp % 10]
        tmp = tmp // 10
    return num == total


def judge_num(n):
    """接受一个大于2的正整数为参数,输出n位自幂数"""
    for num in range(10 ** (n - 1), 10 ** n):
        if armstrong_number(num):
            print(num)


if __name__ == '__main__':
    m = int(input())
    table = [x ** m for x in range(11)]
    judge_num(m)

或后面这种,原理上一样,只是在判断自幂数的时候需要对每一位进行操作,或许变为字符串可以更简单的实现这一点。

def armstrong_number(num):
    """接受一个正整数为参数,判断是否是自幂数,返回布尔值"""
    total = 0
    for i in str(num):
        total = total + table[int(i)]
    if num == total:
        return True
    else:
        return False


def judge_num(n):
    """接受一个大于2的正整数为参数,输出n位自幂数"""
    for num in range(10 ** (n - 1), 10 ** n):
        if armstrong_number(num):
            print(num)


if __name__ == '__main__':
    m = int(input())
    table = [x ** m for x in range(10)]
    judge_num(m)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_62488776

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值