42 lines
717 B
JavaScript
42 lines
717 B
JavaScript
function run_factorize(n) {
|
|
if (n <= 3)
|
|
return [n];
|
|
|
|
var ans = [];
|
|
var done = false;
|
|
while (!done)
|
|
{
|
|
if (n%2 === 0){
|
|
ans.push(2);
|
|
n /= 2;
|
|
continue;
|
|
}
|
|
if (n%3 === 0){
|
|
ans.push(3);
|
|
n /= 3;
|
|
continue;
|
|
}
|
|
if ( n === 1)
|
|
return ans;
|
|
var sr = Math.sqrt(n);
|
|
done = true;
|
|
// try to divide the checked number by all numbers till its square root.
|
|
for (var i=6; i<=sr; i+=6){
|
|
if (n%(i-1) === 0){ // is n divisible by i-1?
|
|
ans.push( (i-1) );
|
|
n /= (i-1);
|
|
done = false;
|
|
break;
|
|
}
|
|
if (n%(i+1) === 0){ // is n divisible by i+1?
|
|
ans.push( (i+1) );
|
|
n /= (i+1);
|
|
done = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
ans.push( n );
|
|
return ans;
|
|
}
|