miller-rabin.mw

> restart; 1
 

> `assign`(iseven, proc (n) options operator, arrow; if 0 = `mod`(n, 2) then true else false end if end proc); 1
 

proc (n) options operator, arrow; if 0 = `mod`(n, 2) then true else false end if end proc (1)
 

> iseven(13); 1
 

false (2)
 

> iseven(14); 1
 

true (3)
 

> `assign`(decomp, proc (nn) local n, j; `assign`(j, 0); `assign`(n, nn); while iseven(n) do `assign`(j, `+`(j, 1)); `assign`(n, `+`(`*`(`/`(1, 2), `*`(n)))) end do; return n, j end proc); 1
 

proc (nn) local n, j; `assign`(j, 0); `assign`(n, nn); while iseven(n) do `assign`(j, `+`(j, 1)); `assign`(n, `+`(`*`(`/`(1, 2), `*`(n)))) end do; return n, j end proc
proc (nn) local n, j; `assign`(j, 0); `assign`(n, nn); while iseven(n) do `assign`(j, `+`(j, 1)); `assign`(n, `+`(`*`(`/`(1, 2), `*`(n)))) end do; return n, j end proc
proc (nn) local n, j; `assign`(j, 0); `assign`(n, nn); while iseven(n) do `assign`(j, `+`(j, 1)); `assign`(n, `+`(`*`(`/`(1, 2), `*`(n)))) end do; return n, j end proc
(4)
 

> decomp(500); 1
 

125, 2 (5)
 

> decomp(1000); 1
 

125, 3 (6)
 

> `assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 =...
 

proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, `mod`(`^`(b, u), N)); `assign`(x1, `mod`(`*`(`^`(x0, 2)), N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N)...
(7)
 

> MR(501, decomp(500), 9); 1
 

true (8)
 

> ifactor(501); 1
 

`*`(``(3), `*`(``(167))) (9)
 

> ifactor(503); 1
 

``(503) (10)
 

> MR(503, decomp(502), 9); 1
 

false (11)
 

> `assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
`assign`(MRtest, proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
 

proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
proc (N) local z, i, b, R; `assign`(z, decomp(`+`(N, `-`(1)))); `assign`(R, rand(1 .. `+`(N, `-`(1)))); for i to 100 do `assign`(b, R()); if MR(N, z, b) then return
(12)
 

> MRtest(1001); 1
 

composite (13)
 

> ifactor(1001); 1
 

`*`(``(7), `*`(``(11), `*`(``(13)))) (14)
 

> MRtest(1003); 1
 

composite (15)
 

> ifactor(1009); 1
 

``(1009) (16)
 

> MRtest(1009); 1
 

prime (probably) (17)
 

> `assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
`assign`(pow, proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x,...
 

proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
proc (bb, ee, N) local e, x, b; `assign`(x, 1); `assign`(b, `mod`(bb, N)); `assign`(e, ee); while `<`(0, e) do if iseven(e) then `assign`(e, `+`(`*`(`/`(1, 2), `*`(e)))) else `assign`(x, `mod`(`*`(x, ...
(18)
 

> pow(4, 10, 11); 1
 

1 (19)
 

> pow(1237689, 4372883, 23877718822); 1
 

8904992837 (20)
 

> pow(1239087409872347834983, 23498773882993884, 12308977439928388477488399200398441); 1
 

1239168362799357242981847749767822 (21)
 

> `assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
`assign`(MR, proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(...
 

proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
proc (N, u, j, b) local i, x0, x1; `assign`(x0, pow(b, u, N)); `assign`(x1, pow(x0, 2, N)); `assign`(i, 1); while `<`(i, j) do if `and`(1 = `mod`(x1, N), `not`(`or`(1 = `mod`(x0, N), `+`(N, `-`(1)) = ...
(22)
 

> MRtest(1001); 1
 

composite (23)
 

> MRtest(1009); 1
 

prime (probably) (24)
 

> MRtest(12389767861); 1
 

composite (25)
 

> MRtest(123807689746923409871230987001); 1
 

composite (26)
 

> MRtest(12038709387432472384938723949938238847743993883299292911); 1
 

composite (27)