问题描述
153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。
输出格式
按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。
方法一:
有点偏C语言思维,对数的每一位进行运算。最后限制Number>100为三位数,否则像000这样的特殊数也会被打印出来,会被识别为错误。
for a in range(0,10):
sum1 = a*a*a
for b in range(0,10):
sum2 = b*b*b
for c in range(0,10):
sum3 = c*c*c
Number=a*100+b*10+c
if Number == sum1+sum2+sum3:
if Number>100:
print(Number)
方法二:
def specialNum():
for N in range(100, 1000):
N = str(N)
if N == str(int(N[0]) ** 3 + int(N[1]) ** 3 + int(N[2]) ** 3):
print(N)
specialNum()
最后这里N一定要转换为字符串类型来判断是否相等,如果是int类型的比较会返回 ‘int’ object is not subscriptable:
Traceback (most recent call last):
File "D:/play/lanqiao_practice/huiwen.py", line 55, in <module>
if N == (int(N[0]) ** 3 + int(N[1]) ** 3 + int(N[2]) ** 3):
TypeError: 'int' object is not subscriptable
同样,这段代码可以不用定义和调用函数,可以顺序的直接写下来。
for N in range(100, 1000):
N = str(N)
if N == str(int(N[0]) ** 3 + int(N[1]) ** 3 + int(N[2]) ** 3):
print(N)