This crate implements primality tests for the primitive integer types up to `u64`.
It is based on the rabin-miller primality test (except for `u8`, which uses a lookup table).
While the rabin-miller test is probabilistic, this crate uses sets of bases that are known to produce correct results for all values in the ranges of the respective integer types.
There is no such set known for `u128`, which is why `u128` is not supported.

```rust
assert!(!is_prime_u64(1000000000000));
assert!(1000000000039u64.is_prime());
```

## Benchmark
The below table shows the average time taken to determine if a number is prime (reciprocal throughput, uniform distribution, AMD Ryzen 9 7900X3D).
Generally, the functions are faster for composiste numbers than for primes.


| type | any | prime | composite |
|------|-----|-------|-----------|
| u8 | 1 ns | 1 ns | 1 ns |
| u16 | 17 ns | 97 ns | 8 ns |
| u32 | 29 ns | 266 ns | 17 ns |
| u64 | 62 ns | 1271 ns | 33 ns |
