use proconio::input; fn solve() -> u64 { input! { n: u64, } let primes = eratosthenes(200000); let mut ans = 0; for &p in &primes { let p = p as u64; let mut x = p * p; while x <= n { ans += x; x = x.saturating_mul(p); } } ans } fn main() { let ans = solve(); println!("{}", ans); } fn eratosthenes(n: usize) -> Vec { let mut arr = vec![true; n + 1]; arr[0] = false; arr[1] = false; let mut i = 2; while i * i <= n { if arr[i] { for x in i..=(n / i) { arr[i * x] = false; } } i += 1; } let mut primes = Vec::new(); for j in 0..=n { if arr[j] { primes.push(j); } } primes }