code wiki / (root) / nx_miller_rabin_test.nx

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}