An efficient implementation of primality testing in MoonBit.
$ moon bench -p kokic/prime/benchmarks --target native
name time (mean ± σ) range (min … max)
kokic/prime BPSW 1.36 ms ± 9.23 µs 1.35 ms … 1.37 ms in 10 × 74 runs
core/math is_probable_prime 17.80 ms ± 200.94 µs 17.50 ms … 17.98 ms in 10 × 6 runstest "is_prime boundary regression" {
assert_true(!is_prime(-1))
assert_true(!is_prime(0))
assert_true(!is_prime(1))
assert_true(is_prime(2))
assert_true(is_prime(3))
assert_true(is_prime(5381))
assert_true(is_prime(5387))
assert_true(is_prime(9973))
assert_true(!is_prime(9999))
assert_true(!is_prime(10000))
assert_true(!is_prime(10001))
assert_true(is_prime(10007))
}fn is_small_prime(n : Int) -> Booltest "is_small_prime boundary regression" {
assert_true(!is_small_prime(0))
assert_true(!is_small_prime(1))
assert_true(is_small_prime(2))
assert_true(is_small_prime(3))
assert_true(is_small_prime(5381))
assert_true(is_small_prime(5387))
assert_true(is_small_prime(5393))
assert_true(is_small_prime(9973))
assert_true(!is_small_prime(9999))
assert_true(!is_small_prime(10000))
}An efficient implementation of primality testing in MoonBit.