nx_miller_rabin_test.nx source
↩ module page · 26 lines · 1513 B
1import "nx_syscalls.nx"
2import "nx_miller_rabin.nx"
3
4func main() -> nx_int {
5 // Trivial cases
6 if nx_miller_rabin(0) != 0 { return __syscall(93, 1, 0, 0, 0, 0, 0) }
7 if nx_miller_rabin(1) != 0 { return __syscall(93, 2, 0, 0, 0, 0, 0) }
8 if nx_miller_rabin(2) != 1 { return __syscall(93, 3, 0, 0, 0, 0, 0) }
9 if nx_miller_rabin(3) != 1 { return __syscall(93, 4, 0, 0, 0, 0, 0) }
10 if nx_miller_rabin(4) != 0 { return __syscall(93, 5, 0, 0, 0, 0, 0) }
11 if nx_miller_rabin(5) != 1 { return __syscall(93, 6, 0, 0, 0, 0, 0) }
12 if nx_miller_rabin(7) != 1 { return __syscall(93, 7, 0, 0, 0, 0, 0) }
13 if nx_miller_rabin(9) != 0 { return __syscall(93, 8, 0, 0, 0, 0, 0) }
14 if nx_miller_rabin(11) != 1 { return __syscall(93, 9, 0, 0, 0, 0, 0) }
15 if nx_miller_rabin(13) != 1 { return __syscall(93, 10, 0, 0, 0, 0, 0) }
16 if nx_miller_rabin(15) != 0 { return __syscall(93, 11, 0, 0, 0, 0, 0) }
17 if nx_miller_rabin(17) != 1 { return __syscall(93, 12, 0, 0, 0, 0, 0) }
18 if nx_miller_rabin(25) != 0 { return __syscall(93, 13, 0, 0, 0, 0, 0) }
19 // Carmichael numbers (composites that fool weak tests)
20 if nx_miller_rabin(561) != 0 { return __syscall(93, 14, 0, 0, 0, 0, 0) }
21 // Large primes
22 if nx_miller_rabin(7919) != 1 { return __syscall(93, 15, 0, 0, 0, 0, 0) }
23 if nx_miller_rabin(104729) != 1 { return __syscall(93, 16, 0, 0, 0, 0, 0) }
24 if nx_miller_rabin(104730) != 0 { return __syscall(93, 17, 0, 0, 0, 0, 0) }
25 return 0
26}