fn get_primes(n: usize) -> Vec { let mut flgs = vec![true; n+1]; flgs[0] = false; flgs[1] = false; for i in 2..=(n as f64).sqrt().ceil() as usize { if !flgs[i] { continue; } for j in i..=n/i { flgs[i*j] = false; } } flgs } fn main() { let mut lr = String::new(); std::io::stdin().read_line(&mut lr).ok(); let lr: Vec = lr.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let l = lr[0]; let r = lr[1]; let primes = get_primes(r*2); let mut result = 0usize; for i in l..=r { if primes[i] { result += 1; } if i < r && primes[i+i+1] { result += 1; } } println!("{}", result); }