题目来源:Python语言程序设计(中国大学MOOC)
授课老师:嵩天、黄天羽、礼欣
题目描述:
“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个”3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用”逗号”分隔输出结果。
代码:
output = []
for d in range(100, 1000):
x = d//100
y = (d%100)//10
z = d%10
s = x**3 + y**3 + z**3
if s == d:
output.append(d)
#以下为输出格式调整
for i in range(len(output)):
if i < len(output)-1:
print(output[i], end=',')
else:
print(output[i])
输出结果:
153,370,371,407
以下内容来自百度百科:自幂数
自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数。)
n为1时,自幂数称为独身数。显然,0,1,2,3,4,5,6,7,8,9都是自幂数;
n为2时,没有自幂数;
n为3时,自幂数称为水仙花数,有4个:153,370,371,407;
n为4时,自幂数称为四叶玫瑰数,共有3个:1634,8208,9474;
n为5时,自幂数称为五角星数,共有3个:54748,92727,93084;
n为6时,自幂数称为六合数,只有1个:548834;
n为7时,自幂数称为北斗七星数,共有4个:1741725,4210818,9800817,9926315;
n为8时,自幂数称为八仙数,共有3个:24678050,24678051,88593477;
n为9时,自幂数称为九九重阳数,共有4个:146511208,472335975,534494836,912985153;
n为10时,自幂数称为十全十美数,只有1个:4679307774。
要求:给定n,计算所有n位数的自幂数
代码一:
n = eval(input()) #n为获取用户输入的整数位数,当n=3时即为计算水仙花数
output = []
for d in range(pow(10,n-1), pow(10,n)):
s = 0
digits = []
for x in range(n):
if x == 0:
digit = d//pow(10,n-1-x)
else:
digit = (d%pow(10,n-x))//pow(10,n-1-x)
digits.append(digit)
for digit in digits:
s += pow(digit, n)
if s == d:
output.append(d)
#print(output)
for i in range(len(output)):
if i < len(output)-1:
print(output[i], end=',')
else:
print(output[i])
代码二:
n = eval(input()) #n为正整数位数
output = []
for d in range(pow(10,n-1), pow(10,n)):
s = 0
digits = []
for x in range(n):
digit = d//pow(10,x)%10
digits.append(digit)
for digit in digits:
s += pow(digit, n)
if s == d:
output.append(d)
print(output)
代码三:
n = eval(input()) #n为正整数位数
output = []
for d in range(pow(10,n-1), pow(10,n)):
s = 0
for digit in str(d):
s += pow(int(digit), n)
if s == d:
output.append(d)
print(output)
要求:给定任意两个自然数,输出这两个自然数(包含)之间的所有自幂数
a, b = eval(input())
output = []
max = max(a, b)
min = min(a, b)
for d in range(min, max+1):
s = 0
temp = d
l = len(str(d)) #l为当前自然数的位数
while temp:
s = s + (temp%10)**l
temp = temp//10
if s == d:
output.append(d)
print(output)