MCPcopy Create free account
hub / github.com/arguiot/TheoremJS / leastFactor

Method leastFactor

__test__/theorem.js:1187–1211  ·  view source on GitHub ↗
(n)

Source from the content-addressed store, hash-verified

1185 return true;
1186 }
1187 leastFactor(n) {
1188 n = new BigNumber(n).abs().toNumber()
1189 if (Number.MAX_SAFE_INTEGER < n) throw `${n} is superior to ${Number.MAX_SAFE_INTEGER}`
1190 let out = false
1191 if (isNaN(n) || !isFinite(n)) out = NaN;
1192 if (n == 0) out = out !== false ? out : 0;
1193 if (n % 1 || n * n < 2) out = out !== false ? out : 1;
1194 if (n % 2 == 0) out = out !== false ? out : 2;
1195 if (n % 3 == 0) out = out !== false ? out : 3;
1196 if (n % 5 == 0) out = out !== false ? out : 5;
1197 const m = Math.sqrt(n);
1198 for (let i = 7; i <= m; i += 30) {
1199 if (n % i == 0) out = out !== false ? out : i;
1200 if (n % (i + 4) == 0) out = out !== false ? out : i + 4;
1201 if (n % (i + 6) == 0) out = out !== false ? out : i + 6;
1202 if (n % (i + 10) == 0) out = out !== false ? out : i + 10;
1203 if (n % (i + 12) == 0) out = out !== false ? out : i + 12;
1204 if (n % (i + 16) == 0) out = out !== false ? out : i + 16;
1205 if (n % (i + 22) == 0) out = out !== false ? out : i + 22;
1206 if (n % (i + 24) == 0) out = out !== false ? out : i + 24;
1207 }
1208 out = out !== false ? out : n
1209
1210 return new BigNumber(out)
1211 }
1212 n(n, base=10) {
1213 return new BigNumber(n, base)
1214 }

Callers

nothing calls this directly

Calls 2

sqrtMethod · 0.80
absMethod · 0.45

Tested by

no test coverage detected