如果一个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))
如果有帮助,请点击一下采纳该答案~谢谢
def lazy_mul(n):
def mul(m):
return m*n
return mul