查找大量

时间:2016-12-02 19:10:55

标签: number-theory

当我想得到大数的所有除数,即n = 10 ^ 12时,我遇到了一个问题。有一种方法可以检查所有可能的数字,小于给定数字n的平方根。

for(int i=1; i<=sqrt(n); ++i){
    if(n%i==0){
        factors.push_back(i);
        if(i!=n/i) factors.push_back(n/i);
    }
}

但是当n非常大,即10 ^ 12时,它需要10 ^ 6次迭代,这是非常慢的。

当我得到给定n的所有素数除数时,有没有更快的方法,例如给定的数字是48。 那么720的素数因子化是2 ^ 4 * 3 ^ 2 * 5.

720的所有除数分别为1,2,3,4,5,6,8,9,10,12,15,16,18,20,24,30,36,40,45,48,60 ,72,80,90,120,144,180,240,360,720。

我已经搜索过比O(sqrt(n))更快的方法。但还没有找到。

0 个答案:

没有答案