Cod sursa(job #3313652)

Utilizator game_difficultyCalin Crangus game_difficulty Data 5 octombrie 2025 18:50:48
Problema Ciurul lui Eratosthenes Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 0.81 kb
use std::{fs::File, io::BufWriter};
#[allow(unused_imports)]
use std::io::{BufRead, BufReader, Read, Write};

const FILE: &'static str = "ciur";

fn main() {
    let mut fin = BufReader::new(File::open(format!("{}.in", FILE)).unwrap());
    let mut fout = BufWriter::new(File::create(format!("{}.out", FILE)).unwrap());

    let mut input = String::new();
    fin.read_line(&mut input).unwrap();

    let n = input.trim().parse::<usize>().unwrap();
    let sqrtn = f64::sqrt(n as f64).ceil() as usize;

    let mut ciur = vec![true; n + 1];
    ciur[0] = false;
    ciur[1] = false;
    for i in 2..=sqrtn {
        if ciur[i] == true {
            for j in (i*i..=n).step_by(i) {
                ciur[j] = false;
            }
        }
    }
    write!(&mut fout, "{}", ciur.into_iter().map(|x| x as i32).sum::<i32>()).unwrap();
}