最近刷到水仙花数的算法题,本身水仙花数的算法并不难,但是这道题限制要在1s内给出答案,所以不得不查些资料看下有没有更好的算法,最后成功解决了这个问题,能够在1s内给出7位的水仙花数。
算法参考了林宣治的”水仙花数的计算机解法”,代码如下:
# -*- coding: utf-8 -*-
def is_Narc(num, digits):
tmp_sum = 0
tmp_num = num
while tmp_num//10 != 0:
tmp_sum = tmp_sum + (tmp_num%10)**digits
tmp_num = tmp_num // 10
tmp_sum = tmp_sum + tmp_num**digits
return tmp_sum == num
def find_all_Narcs(digits):
Narcs = []
max_counts = [digits] + [int((10/i)**digits) for i in range(