Cod sursa(job #2476244)

Utilizator Rufus007Marincia Catalin Rufus007 Data 18 octombrie 2019 15:07:46
Problema Ciurul lui Eratosthenes Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 1.01 kb
use std::fs::File;
use std::io::{BufWriter, Write, BufReader, BufRead};

fn read(path: &str) -> i64 {
    let br = BufReader::new(File::open(path)
        .expect(&format!("Couldn't open {} input file!", path)));

  match  br.lines().next(){
        Some(c)=>{
            let c=c.unwrap();
            return c.parse::<i64>().unwrap();}
        _=>{panic!("not a number!")}
    }
}
fn main() {
 let mut n=  read("ciur.in") as usize;
    let mut prim = vec![false; 2_000_001];
    prim[0] = true;
    prim[1] = true;


    let mut i = 2;
    while (i * i <= n) {
        if prim[i] == false {
            let mut j = 2;
            while (i * j <= n) {
                prim[i * j] = true;
                j += 1;
            }
        }
        i += 1;
    }
    let mut total = 0;
    for i in 2..=n
        {
            if prim[i] == false {
                total += 1;
            }
        }

    let mut bw=BufWriter::new(File::create("ciur.out")
        .expect("Couldn't create the output file! "));

    write!(bw,"{}",total);
}