求输入数字的公因数的最快算法

输入一个数字,求出它的公因数的最快算法

输入: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