UNPKG

theorem.js

Version:

A Math library for computation in JavaScript

26 lines (24 loc) 1.15 kB
leastFactor(n) { n = new BigNumber(n).abs().toNumber() if (Number.MAX_SAFE_INTEGER < n) throw `${n} is superior to ${Number.MAX_SAFE_INTEGER}` let out = false if (isNaN(n) || !isFinite(n)) out = out !== false ? out : NaN; if (n == 0) out = out !== false ? out : 0; if (n % 1 || n * n < 2) out = out !== false ? out : 1; if (n % 2 == 0) out = out !== false ? out : 2; if (n % 3 == 0) out = out !== false ? out : 3; if (n % 5 == 0) out = out !== false ? out : 5; const m = Math.sqrt(n); for (let i = 7; i <= m; i += 30) { if (n % i == 0) out = out !== false ? out : i; if (n % (i + 4) == 0) out = out !== false ? out : i + 4; if (n % (i + 6) == 0) out = out !== false ? out : i + 6; if (n % (i + 10) == 0) out = out !== false ? out : i + 10; if (n % (i + 12) == 0) out = out !== false ? out : i + 12; if (n % (i + 16) == 0) out = out !== false ? out : i + 16; if (n % (i + 22) == 0) out = out !== false ? out : i + 22; if (n % (i + 24) == 0) out = out !== false ? out : i + 24; } out = out !== false ? out : n return new BigNumber(out) }