dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
use crate::{
    make_sparse_histogram::make_sparse_histogram,
    prime_factorize_pollard_rho_flat::*,
};

pub fn prime_factorize_pollard_rho<F>(
    is_prime: &F,
    n: u64,
) -> Result<Vec<(u64, u8)>, &'static str>
where
    F: Fn(u64) -> bool,
{
    Ok(make_sparse_histogram(prime_factorize_flat_pollard_rho(is_prime, n)?)
        .into_iter()
        .map(|(p, c)| (p, c as u8))
        .collect())
}

#[cfg(test)]

mod tests {

    #[test]

    fn test() {
        use super::*;
        use crate::{
            primality::test::mr::*,
            prime_factorize_trial_division::*,
        };

        for i in 1..10000 {
            assert_eq!(
                prime_factorize_pollard_rho(&is_p, i),
                Ok(prime_factorize(i)),
            );
        }
    }
}