diff --git a/min-factor-distance/index.js b/min-factor-distance/index.js new file mode 100644 index 0000000..4947d12 --- /dev/null +++ b/min-factor-distance/index.js @@ -0,0 +1,29 @@ +// 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; +} \ No newline at end of file