code wiki / (root) / nx_pow_mod_test.nx

nx_pow_mod_test.nx source

↩ module page · 22 lines · 990 B

1import "nx_syscalls.nx" 2import "nx_pow_mod.nx" 3 4func main() -> nx_int { 5 // 2^10 = 1024 mod 1000 = 24 6 if nx_pow_mod(2, 10, 1000) != 24 { return __syscall(93, 1, 0, 0, 0, 0, 0) } 7 // 3^7 = 2187 mod 100 = 87 8 if nx_pow_mod(3, 7, 100) != 87 { return __syscall(93, 2, 0, 0, 0, 0, 0) } 9 // 5^0 = 1 10 if nx_pow_mod(5, 0, 7) != 1 { return __syscall(93, 3, 0, 0, 0, 0, 0) } 11 // 7^1 mod 5 = 2 12 if nx_pow_mod(7, 1, 5) != 2 { return __syscall(93, 4, 0, 0, 0, 0, 0) } 13 // 2^20 = 1048576 mod 1000000007 = 1048576 14 if nx_pow_mod(2, 20, 1000000007) != 1048576 { return __syscall(93, 5, 0, 0, 0, 0, 0) } 15 // Fermat: 2^(p-1) mod p == 1 for prime p=13 16 if nx_pow_mod(2, 12, 13) != 1 { return __syscall(93, 6, 0, 0, 0, 0, 0) } 17 // m == 1 -> always 0 18 if nx_pow_mod(123, 456, 1) != 0 { return __syscall(93, 7, 0, 0, 0, 0, 0) } 19 // m == 0 -> defensive 0 20 if nx_pow_mod(3, 4, 0) != 0 { return __syscall(93, 8, 0, 0, 0, 0, 0) } 21 return 0 22}