An efficient implementation of primality testing in MoonBit.
$ moon bench -p kokic/prime/benchmarks --target native --release
name time (mean ± σ) range (min … max)
kokic/prime BPSW aggregate 391.42 µs ± 2.54 µs 387.84 µs … 395.03 µs in 10 × 256 runs
core/math MR iters=1 aggregate 136.49 µs ± 968.35 ns 134.86 µs … 138.01 µs in 10 × 740 runs
core/math MR iters=8 aggregate 708.71 µs ± 6.47 µs 698.48 µs … 716.75 µs in 10 × 140 runs
core/math MR iters=64 aggregate 5.19 ms ± 45.90 µs 5.12 ms … 5.26 ms in 10 × 20 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))
}Install
Download zipAn efficient implementation of primality testing in MoonBit.