输入一个数字,求出它的公因数的最快算法
输入:15
输出:15=3x5
输入:16
输出:16=2x2x2x2
https://blog.csdn.net/chenmh82/article/details/88089542
原理是将已知素数放在 bitmap 里面查表
可以用素数筛,时间复杂度稳定O(n),楼上专家链接的做法有冗余判断,不过影响不大。
参考我的这篇博客,里面有分解质因数的程序,变上限循环,对于质因数较小的数处理速度最快,同时对分解质因数的方法做了比较。
def getdiv(n):
'''
:param n: 你要求取质因数的整数
:return: 返回质因数数列
'''
i = 2
_div = []
while i <= n:
while n % i == 0:
_div.append(i)
n = n/i
i = i+1
return _div