Cod sursa(job #3364882)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 12 septembrie 2026 18:19:44
Problema Ciurul lui Eratosthenes Scor 100
Compilator rs Status done
Runda Arhiva educationala Marime 0.83 kb
use std::fs;
use std::io::{BufWriter, Write};

fn main() {

    let file = fs::File::create("ciur.out").unwrap();
    let mut writer = BufWriter::new(file);

    let input: String = fs::read_to_string("ciur.in").unwrap();
    let mut tokens = input.split_whitespace();

    let mut next_num = || -> usize {
        tokens.next().unwrap().parse::<usize>().unwrap()
    };

    let n = next_num();
    let mut sieve = vec![false; n + 1];

    let mut i = 3;
    loop {
        if sieve[i] == false {
            for j in (i*i..=n).step_by(2 * i) {
                sieve[j] = true;
            }
        }

        i += 2;
        if i * i > n {
            break;
        }
    }

    let mut cnt: usize = 0;
    for i in 2..=n {
        if sieve[i] == true {
            cnt += 1;
        }
    }

    writeln!(writer, "{}", (n + 1) / 2 - cnt).unwrap();
}