primes/
primes.rs

1use std::process::exit;
2
3use rk_primes::{Sieve, UNDER_100000};
4
5fn print_n(items: impl IntoIterator<Item = u32>, n: usize) {
6    items
7        .into_iter()
8        .take(n)
9        .for_each(|item| println!("{item}"));
10}
11
12fn main() {
13    let count = std::env::args().nth(1).unwrap_or_else(|| {
14        eprintln!("error: expected count");
15        exit(2);
16    });
17    let Ok(count) = count.parse::<usize>() else {
18        eprintln!("error: {count}: expected natural number");
19        exit(2);
20    };
21    if count <= UNDER_100000.len() {
22        print_n(UNDER_100000, count);
23    } else {
24        print_n(Sieve::default().primes(), count);
25    }
26}