我编写了两个不同的python程序来检查一个数字是否为Armstrong。哪种方法更好,复杂性更低?你知道吗
第一种方法:
def isArmstrong(n):
temp = n
length=len(str(n))
sum1,digit=0,0
while n>0:
digit = n%10
n = n//10
sum1 += digit**length
if sum1==temp:
print('Armstrong No')
else:
print('Not an Armstrong no')
isArmstrong(371)
第二种方法:
def isArmstrong(n):
n=str(n)
sum=0
for i in n:
sum += int(i)**len(n)
if str(sum)==n: #Edited After Reading Comments
print('No is Armstrong')
else:
print('No is not Armstrong')
isArmstrong(371)
两种算法都有相同的time complexity,但是您应该更喜欢第二种算法,因为它更具可读性。你知道吗
你也可以这样简化它:
编辑:
如果你真的需要最大的性能,那么是的,第一个解决方案的速度从几纳秒开始就更快了,我认为这是因为它避免了
int
转换,这似乎比解决方案1的划分要贵一些。你知道吗但是如果你能抽出一两纳秒的时间,我肯定会建议你选择另外两个,因为它们的可读性要高得多,而且在python中:Readability counts.
如您所见,对于100000次迭代,差异非常小:
相关问题 更多 >
编程相关推荐