dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
use crate::is_prime_table_from_enumerate_primes::is_prime;

pub fn next_prime_table(size: usize) -> Vec<u64> {
    const MAX_PRIME_GAP_64: u64 = 1550;

    let mut next = is_prime(size + MAX_PRIME_GAP_64 as usize)
        .into_iter()
        .enumerate()
        .map(|(i, is_prime)| if is_prime { Some(i as u64) } else { None })
        .collect::<Vec<_>>();

    for i in (1..size + 1550).rev() {
        if next[i - 1].is_none() {
            next[i - 1] = next[i];
        }
    }

    next.into_iter().take(size).map(|x| x.unwrap()).collect()
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let next_prime = next_prime_table(20);

        assert_eq!(
            next_prime,
            vec![
                2, 2, 2, 3, 5, 5, 7, 7, 11, 11, 11, 11, 13, 13, 17, 17, 17, 17,
                19, 19,
            ],
        )
    }
}