import { ShorsAlgorithm } from '../ShorsAlgorithm' import { fermatPrimeCheck } from '../FermatPrimalityTest' describe("Shor's Algorithm", () => { const N = 10 // number of tests const max = 35000 // max value to factorize const min = 1000 // min value to factorize for (let i = 0; i < N; i++) { while (true) { const num = Math.floor(Math.random() * max) + min // num must be composite, don't care for false negatives if (fermatPrimeCheck(num, 1)) continue it('should find a non-trivial factor of ' + num, () => { const f = ShorsAlgorithm(num) // should not be trivial expect(f).not.toEqual(1) expect(f).not.toEqual(num) // should be a factor expect(num % f).toEqual(0) }) break } } })