forked from TheAlgorithms/JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathShorsAlgorithm.test.js
More file actions
29 lines (23 loc) · 793 Bytes
/
ShorsAlgorithm.test.js
File metadata and controls
29 lines (23 loc) · 793 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
}
}
})