#include #include using namespace std; using i32 = int; using u32 = unsigned int; using i64 = long long; using u64 = unsigned long long; #define FAST_IO \ ios::sync_with_stdio(false); \ cin.tie(0); const i64 INF = 1001001001001001001; using Modint = atcoder::static_modint<998244353>; int main() { FAST_IO int N, M; cin >> N >> M; // d|gcd(a,b) sum(mu(d)) // d|a and d|b sum(mu(d)) // d=1,... a=dp, b=dq sum(mu(d)) vector mu(max(N, M) + 1, 1); mu[0] = 0; vector is_prime(N + 1, true); for (int i = 2; i <= N; i ++) { if (is_prime[i]) { if (1LL * i * i <= N) { for (int j = i * i; j <= N; j += i * i) { mu[j] = 0; } } for (int j = i; j <= N; j += i) { is_prime[j] = false; mu[j] *= -1; } } } i64 ans = 0; for (int d = 1; d <= min(N, M); d ++) { ans += 1LL * (N/d) * (M/d) * mu[d]; } cout << ans << endl; }