Cod sursa(job #2639597)

Utilizator TincaMateiTinca Matei TincaMatei Data 3 august 2020 01:36:01
Problema Ciurul lui Eratosthenes Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 0.64 kb
use std::fs::File;
use std::io::{Read, Write};

fn main() {
  let mut fin = File::open("ciur.in").unwrap();
  let mut fout = File::create("ciur.out").unwrap();
  
  let mut line = String::new();
  fin.read_to_string(&mut line).unwrap();

  let n : usize = line.trim().parse().unwrap();
  
  let mut ciur : Vec<bool> = vec![false; n + 1];

  (2..n + 1).filter(|x| {x * x <= n})
            .for_each(|x| { 
    if !ciur[x] {
      (2..(n / x + 1)).map(|y| { x * y })
                      .for_each(|y| {ciur[y] = true})
    }
  });
  
  let res : usize = (2..n + 1).filter(|x| { !ciur[*x] }).count();
  fout.write(format!("{}", res).as_bytes()).unwrap();
}