File: binary-search-sieve.rs

package info (click to toggle)
rust-primal 0.3.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 304 kB
  • sloc: sh: 33; makefile: 2
file content (25 lines) | stat: -rw-r--r-- 686 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::env;
use std::time::Instant;

fn main() {
    let mut args = env::args();
    let zeros = args
        .nth(1).and_then(|s| s.parse::<f64>().ok().map(|x| x as u32))
        .unwrap_or(10);

    let start = Instant::now();
    let mut low = 1 << (zeros + 1);
    let p = loop {
        println!("searching {}--{}", low, low * 2);
        let sieve = primal::Sieve::new(low * 2);
        match sieve.primes_from(low).find(|p| (p / 2).trailing_zeros() >= zeros) {
            Some(p) => break p,
            None => {}
        }
        low *= 2;
    };
    let time = start.elapsed();

    println!("{} is the first prime with {} zeros, in {:?}",
             p, zeros, time);
}