Trait facto::CertifiedFactorization
source · [−]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
fn certified_factor<T>(
self,
certificate: PrimalityCertainty<'_, Self>,
events: T
) -> Vec<Self> where
T: FactoringEventSubscriptor<Self>,
fn certified_factor<T>(
self,
certificate: PrimalityCertainty<'_, Self>,
events: T
) -> Vec<Self> where
T: FactoringEventSubscriptor<Self>,
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());fn certified_prime_check(
self,
certificate: PrimalityCertainty<'_, Self>
) -> bool
fn certified_prime_check(
self,
certificate: PrimalityCertainty<'_, Self>
) -> bool
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())