29 lines
589 B
JavaScript
29 lines
589 B
JavaScript
// https://www.codewars.com/kata/min-factor-distance/train/javascript
|
|
|
|
function minDistance(n){
|
|
let f = factors(n);
|
|
f.unshift(1);
|
|
let min = Infinity;
|
|
for (let i = 1; i < f.length; ++i) {
|
|
let diff = f[i] - f[i-1];
|
|
if (0 < diff) {
|
|
min = Math.min(min, diff);
|
|
}
|
|
}
|
|
return min;
|
|
}
|
|
|
|
function factors(n) {
|
|
let max = Math.floor(Math.sqrt(n));
|
|
let res = [];
|
|
for (let i = 2; i <= max; ++i) {
|
|
if (n % i === 0) {
|
|
res.push(i);
|
|
n /= i;
|
|
max = Math.floor(Math.sqrt(n));
|
|
i = (Math.min(...res) || 2) - 1;
|
|
}
|
|
}
|
|
res.push(n);
|
|
return res;
|
|
} |