# -*- coding: UTF-8 -*-
'''
在三位的正整数中,例如abc,有一些可以满足a^3 + b^3 + c^3 = abc的条件(a3表示a的三次方),也就是说各位的立方和正好是该数的本身,这样的数称为armstrong数,试求出所有的三位armstrong数,需要考虑效率问题
推理 三个数之和至少为4 至多为24
sumO=a**3 + b**3 + c**3和sumOfArmstrong = listLiFang[a]+listLiFang[b]+listLiFang[c]两种形式居然总体执行时间差不多,可能python有优化吧
'''
from timeit import Timer
listLiFang=[x**3 for x in range(0,10)]
def ComputArmstrong():
for a in range(0,10):
for b in range(0,10):
for c in range(0,10):
sumOfArmstrong=a**3 + b**3 + c**3#sumOfArmstrong = listLiFang[a]+listLiFang[b]+listLiFang[c]
if sumOfArmstrong<1000 and sumOfArmstrong>=100 and a*100+b*10+c == sumOfArmstrong:
return 1#print "%d" %(sumOfArmstrong)
def ComputArmstrongBySigalFor():
for item in range(101, 1000):
a=item/100;
b=item/10%10;
c=item%10;
if a**3 + b**3 + c**3 == item:#if listLiFang[a]+listLiFang[b]+listLiFang[c] == item:
return 1#print "%d" %(item)
if __name__=='__main__':
t1=Timer("ComputArmstrong()","from __main__ import ComputArmstrong")
t2=Timer("ComputArmstrongBySigalFor()","from __main__ import ComputArmstrongBySigalFor")
print t1.timeit(100000)
print t2.timeit(100000)
Armstrong数 (水仙花数)
最新推荐文章于 2023-03-11 11:37:18 发布