"""
自幂数是指一个 n 位正整数,如果它的各位数字的 n 次方的和加起来等于这个数,数学家称这样的数为自幂数。例如,13+53+33=153,
153 就是一个 3 位的自幂数,3 位自幂数也称为水仙花数。本程序设 n 的数值为 1~6,当 n 大于 6 时,程序退出。
"""
i = int(input("请输入一个1-6的正整数:"))
l = []
a = 1
b = 9
if 1 <= i <= 6: #判断输入的数值是几位数
if i == 1:
for j in range(10):
if j == j**i:
l.append(j)
else:
break
else:
a = 10**(i-1)
b = 10**i
for f in range(a,b): #分别对响应位数范围内所有的数值进行循环判断
count = 0
f = str(f) #转换成字符供下面安位取值
for g in range(i):
count += (int(f[g]))**i #计算每个数值个位数值的N次方相加的数值
if int(f) == count: #判断原始数值与通过位数的次方想法的数值是否相等,相等则满足条件,添加到列表
l.append(f)
else:
continue
print(l)
else:
print("输入的数值超出了范围,程序结束")
#
# 法二:
# 自幂数
start = 0
end = 0
digit = 0
m = 0
n = int(input('请选择自幂数的位数【1,2,3,4,5,6】:'))
while 0 < n < 7:
start = pow(10, n - 1)
end = pow(10, n) - 1
print(n, '位数的自幂数有:')
for k in range(start, end + 1):
m = k
total = 0
while m != 0:
digit = m % 10
total += pow(digit, n)
m = m // 10
if total == k:
print(str(k), end=' ')
n = int(input('\n 请选择自幂数的位数【1,2,3,4,5,6】:'))
else:
print('输入位数不在范围内,程序结束。')
用户输入位数 n,找出并显示出所有 n 位的自幂数
最新推荐文章于 2023-11-18 10:19:22 发布