use proconio::input; fn main() { input! { n: usize, m: usize, } let (n, m) = (n.min(m), n.max(m)); let mut ans = n * m; let mut mu = vec![2i8; n + 1]; for i in 2..=n { if mu[i] == 2 { for j in (i..=n).step_by(i) { mu[j] = match mu[j] { 1 | 2 => -1, -1 => 1, 0 => 0, _ => unreachable!(), } } for j in (i * i..=n).step_by(i * i) { mu[j] = 0; } } if mu[i] == 1 { ans += (n / i) * (m / i); } else if mu[i] == -1 { ans -= (n / i) * (m / i); } } println!("{ans}"); }