/** @internal */ function buildLargePrimePool( count: number): bigint[] { const pool: bigint[] = []; // Start near 2^32 and walk down over odd candidates. let n = 4294967291; while (pool.length < count) { if (isPrime32(n)) { pool.push(BigInt(n)); } n -= 2; } return pool; } /** @internal */ function isPrime32(n: number): boolean { if (n < 2) { return false; } if (n % 2 === 0) { return n === 2; } if (n % 3 === 0) { return n === 3; } // 6k +/- 1 wheel trial division is fast enough for 32-bit candidates. for (let d=5; d*d <= n; d += 6) { if (n % d === 0 || n % (d + 2) === 0) { return false; } } return true; } // buildLargePrimePool(96); <-- 96 primes below 2^32 const primes = [ 4294967291n, 4294967279n, 4294967231n, 4294967197n, 4294967189n, 4294967161n, 4294967143n, 4294967111n, 4294967087n, 4294967029n, 4294966997n, 4294966981n, 4294966943n, 4294966927n, 4294966909n, 4294966877n, 4294966829n, 4294966813n, 4294966769n, 4294966667n, 4294966661n, 4294966657n, 4294966651n, 4294966639n, 4294966619n, 4294966591n, 4294966583n, 4294966553n, 4294966477n, 4294966447n, 4294966441n, 4294966427n, 4294966373n, 4294966367n, 4294966337n, 4294966297n, 4294966243n, 4294966237n, 4294966231n, 4294966217n, 4294966187n, 4294966177n, 4294966163n, 4294966153n, 4294966129n, 4294966121n, 4294966099n, 4294966087n, 4294966073n, 4294966043n, 4294966007n, 4294966001n, 4294965977n, 4294965971n, 4294965967n, 4294965949n, 4294965937n, 4294965911n, 4294965887n, 4294965847n, 4294965841n, 4294965839n, 4294965821n, 4294965793n, 4294965767n, 4294965757n, 4294965737n, 4294965733n, 4294965721n, 4294965691n, 4294965683n, 4294965679n, 4294965673n, 4294965671n, 4294965659n, 4294965641n, 4294965617n, 4294965613n, 4294965601n, 4294965581n, 4294965529n, 4294965487n, 4294965461n, 4294965457n, 4294965413n, 4294965383n, 4294965361n, 4294965347n, 4294965331n, 4294965313n, 4294965307n, 4294965263n, 4294965251n, 4294965229n, 4294965203n, 4294965193n ]; export { buildLargePrimePool, isPrime32, primes }