RosettaCodeData/Task/Casting-out-nines/Rust/casting-out-nines.rust
2020-02-17 23:21:07 -08:00

21 lines
671 B
Text

fn compare_co9_efficiency(base: u64, upto: u64) {
let naive_candidates: Vec<u64> = (1u64..upto).collect();
let co9_candidates: Vec<u64> = naive_candidates.iter().cloned()
.filter(|&x| x % (base - 1) == (x * x) % (base - 1))
.collect();
for candidate in &co9_candidates {
print!("{} ", candidate);
}
println!();
println!(
"Trying {} numbers instead of {} saves {:.2}%",
co9_candidates.len(),
naive_candidates.len(),
100.0 - 100.0 * (co9_candidates.len() as f64 / naive_candidates.len() as f64)
);
}
fn main() {
compare_co9_efficiency(10, 100);
compare_co9_efficiency(16, 256);
}