#![doc = include_str!("../README.md")]
#![warn(
missing_docs,
rustdoc::missing_crate_level_docs,
unused_results,
clippy::complexity,
clippy::perf,
clippy::style
)]
use thiserror::Error;
pub mod primes;
pub const COUNT_UNDER_100: usize = 25;
pub const COUNT_UNDER_1K: usize = 168;
pub const COUNT_UNDER_10K: usize = 1229;
pub const COUNT_UNDER_100K: usize = 9592;
#[derive(Error, Debug)]
pub enum PrimeError {
#[error("指定された数が範囲外です")]
OutOfRange,
}
#[cfg(feature = "prime_u8")]
pub const fn primes_u8<const N: usize>() -> Result<[u8; N], PrimeError> {
if N < 1 || N > primes::PRIME_U8.len() {
return Err(PrimeError::OutOfRange);
}
let mut primes = [0u8; N];
let mut i = 0;
while i < N {
primes[i] = primes::PRIME_U8[i];
i += 1;
}
Ok(primes)
}
#[cfg(feature = "prime_u16")]
pub const fn primes_u16<const N: usize>() -> Result<[u16; N], PrimeError> {
if N < 1 || N > primes::PRIME_U16.len() {
return Err(PrimeError::OutOfRange);
}
let mut primes = [0u16; N];
let mut i = 0;
while i < primes::PRIME_U8.len() {
primes[i] = primes::PRIME_U8[i] as u16;
i += 1;
}
let mut j = 0;
while i < N {
primes[i] = primes::PRIME_U16[j];
i += 1;
j += 1;
}
Ok(primes)
}