Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Prime-decomposition/JavaScript/prime-decomposition-2.js
Normal file
40
Task/Prime-decomposition/JavaScript/prime-decomposition-2.js
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
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 + 6); 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue