查找一个数的所有约数的算法
📁 功能, 列表, python, 示例
大家好!在解决网络问题时,需要一个查找一个数的所有约数的算法。也就是说,对于8,应该输出[1,2,4,8],而不是[2,2,2]——即约数列表。我重写了这个算法,请“前辈们”指点如何改进。如果有时间的话))
def divisors(n): from collections import Counter ls = get_ls(n) # 对于 n = 1568 -> ls = [2, 2, 2, 2, 2, 7, 7] pairs = dict(Counter(ls)) # {2: 5, 7: 2} from itertools import product, starmap from operator import mul from functools import reduce # list