pub trait CertifiedFactorization: Sized {
    fn certified_factor<T>(
        self,
        certificate: PrimalityCertainty<'_, Self>,
        events: T
    ) -> Vec<Self>
    where
        T: FactoringEventSubscriptor<Self>
; fn certified_prime_check(
        self,
        certificate: PrimalityCertainty<'_, Self>
    ) -> bool; }
Expand description

Factorize number while possible updating a lucas certificate

Required Methods

Same as Factoring::factor_events, but optionally a certificate can be passed, which will be filled to certify the primality of all factors found

Example
use facto::{CertifiedFactorization, PrimalityCertainty};
let mut c = facto::LucasCertificate::default();
let f = 10987081u128.certified_factor(
    PrimalityCertainty::Certified(&mut c), 
    facto::EmptyFactoringEventSubscriptor{}
);
assert_eq!(f, vec![7, 107, 14669]);
assert!(c.elements.binary_search_by_key(&7, |x| x.n).is_ok());
assert!(c.elements.binary_search_by_key(&107, |x| x.n).is_ok());
assert!(c.elements.binary_search_by_key(&14669, |x| x.n).is_ok());

Given a certificate, equivalent to Primality::generate_lucas_certificate.

use facto::{Primality, CertifiedFactorization, PrimalityCertainty};
let mut c = facto::LucasCertificate::default();
assert!(101u64.certified_prime_check(PrimalityCertainty::Certified(&mut c)));
assert_eq!(c.get_max(), 101u64.generate_lucas_certificate().unwrap().get_max())

Implementations on Foreign Types

Implementors