RosettaCodeData/Task/Wieferich-primes/Rust/wieferich-primes.rust
2023-07-01 13:44:08 -04:00

17 lines
430 B
Text

// [dependencies]
// primal = "0.3"
// mod_exp = "1.0"
fn wieferich_primes(limit: usize) -> impl std::iter::Iterator<Item = usize> {
primal::Primes::all()
.take_while(move |x| *x < limit)
.filter(|x| mod_exp::mod_exp(2, *x - 1, *x * *x) == 1)
}
fn main() {
let limit = 5000;
println!("Wieferich primes less than {}:", limit);
for p in wieferich_primes(limit) {
println!("{}", p);
}
}