用python编写程序求阿姆斯特数

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯
特朗数。例如13+53+33=153。例如1000以内的阿姆斯特朗数:1,
2,3,4,5,6,7,8,9,153,370,371,407。其中153是第10个阿姆斯特朗
数。编程求出第15个阿姆斯特数。

这个可以用函数实现

def is_armstrong_num(num):
    """判断一个数是否为阿姆斯特朗数"""

    n = len(str(num))
    sum_of_digits = sum(int(digit) ** n for digit in str(num))
    return sum_of_digits == num


def find_15th_armstrong_num():
    """找出第15个阿姆斯特朗数"""

    count = 0
    num = 0
    while count < 15:
        num += 1
        if is_armstrong_num(num):
            count += 1
    return num

print(find_15th_armstrong_num())

写一个循环就可以,代码如下:

def is_armstrong(num):
    # 将数转化为字符串以获取其长度(位数)
    n = len(str(num))
    # 用列表解析式将数字的每一位提取出来,计算其n次方,并求和
    total = sum(int(x) ** n for x in str(num))
    # 判断这个数是否是阿姆斯特朗数
    return total == num

def find_armstrong(n):
    # 初始化计数器和当前数字
    count = 0
    num = 1

    while True:
        if is_armstrong(num):
            count += 1
            # 如果我们已经找到了n个阿姆斯特朗数,返回当前数字
            if count == n:
                return num
        # 在下一个数字上重复这个过程
        num += 1

# 打印第15个阿姆斯特朗数
print(find_armstrong(15))



如果有帮助,请点击一下采纳该答案~谢谢

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7415779
  • 除此之外, 这篇博客: 190道Python3基础题以及解答中的 55.写一个函数,接收整数参数 n,返回一个函数,函数的功能是把函数的参数和 n 相乘并把结果返回。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • def lazy_mul(n):
        def mul(m):
            return m*n
        return mul