RosettaCodeData/Task/Prime-conspiracy/Rust/prime-conspiracy-4.rust
2023-07-01 13:44:08 -04:00

34 lines
887 B
Text

// [dependencies]
// primal = "0.2"
fn compute_transitions(limit: usize) {
use std::collections::BTreeMap;
let mut transitions = BTreeMap::new();
let mut prev = 0;
for n in primal::Primes::all().take(limit) {
let digit = n % 10;
if prev != 0 {
let key = (prev, digit);
if let Some(v) = transitions.get_mut(&key) {
*v += 1;
} else {
transitions.insert(key, 1);
}
}
prev = digit;
}
println!("First {} prime numbers:", limit);
for ((from, to), c) in &transitions {
let freq = 100.0 * (*c as f32) / (limit as f32);
println!(
"{} -> {}: count = {:7}, frequency = {:.2} %",
from, to, c, freq
);
}
}
fn main() {
compute_transitions(1000000);
println!();
compute_transitions(100000000);
}