use proconio::input; fn main() { input! { a: usize, b: usize, } // bまでの素数を求める let primes = prime_list(b); // [a..b]に含まれる素数について、f(x)を計算して総和を加算 let mut ans = 0; for val in primes { if val < a { continue; } ans += fx(val); } println!("{}", ans); } fn fx(x: usize) -> usize { x*x*x - x*x + x + 1 } // エラトステネスの篩による素数リスト pub fn prime_list(x: usize) -> Vec { let mut bools = vec![true; x + 1]; bools[0] = false; bools[1] = false; let mut i = 2; while i * i <= x { if bools[i] { let mut now = 2 * i; while now <= x { bools[now] = false; now += i; } } i += 1; } let mut ret = Vec::new(); for i in 0..=x { if bools[i] { ret.push(i) }; } ret }