如何用python快速分解素因数
有没有算法可以快速计算出一个合数的因数,由于数字特别大(几千位),不能用递归方式求解,有没有快速的算法? 递归也很快吧 本帖最后由 kesai 于 2021-2-22 22:51 编辑以前的代码,自己看吧,nodejs的版本
//ref:https://www.geeksforgeeks.org/find-largest-prime-factor-number/
/**
* 查找最大因子
* @Param {*} x
*/
function get_max_factor(x) {
var maxPrime = -1;
while (x % 2 === 0) {
x /= 2;
maxPrime = 2;
}
for (var i = 3; i < Math.sqrt(x) + 1; i += 2) {
while (x % i === 0) {
x /= i;
maxPrime = i
}
}
if (x > 2) return x;
return maxPrime;
}
/**
* 分解因子并返回各个因子组成个数
* @param {} x
*/
function get_factors(x) {
var counts = {};
while (x % 2 === 0) {
x /= 2;
counts = counts ? counts + 1 : 1;
}
for (var i = 3; i < Math.sqrt(x) + 1; i += 2) {
if (x % i === 0) {
var count = 0;
while (x % i === 0) {
x /= i;
count++;
}
counts = count;
}
}
if (x > 2) counts = 1;
return counts;
}
/**
* 大数的分解,以数组形式返回因子组成
* @param {*} n
*/
function factorize(n) {
var res = []
while (!(n % 2 > 0)) {
n /= 2;
res.push(2);
}
for (i = 3; i <= Math.sqrt(n); i += 2) {
while (n % i == 0) {
res.push(i);
n = n / i;
}
}
if (n > 2) {
res.push(n);
}
return res;
} python本身就太慢了
页:
[1]