#include<iostream> #include<cstdio> #define maxn 10000010 #define ll long long usingnamespacestd;
int n, m, k;
int pri[maxn], cnt, mu[maxn], f[maxn]; bool isp[maxn]; voidinit_isp(int n){ mu[1] = 1; for (int i = 2; i <= n; ++i) { if (!isp[i]) pri[++cnt] = i, mu[i] = -1; for (int j = 1; j <= cnt && i * pri[j] <= n; ++j) { isp[i * pri[j]] = 1; if (i % pri[j] == 0) break; mu[i * pri[j]] = -mu[i]; } } for (int i = 1; i <= cnt; ++i) for (int j = pri[i], k = 1; j <= n; j += pri[i], ++k) f[j] += mu[k]; for (int i = 1; i <= n; ++i) f[i] += f[i - 1]; }
voidwork(){ cin >> n >> m; if (n > m) swap(n, m); ll ans = 0; for (int l = 1, r; l <= n; l = r + 1) { r = min(n / (n / l), m / (m / l)); ans += (ll) (f[r] - f[l - 1]) * (n / l) * (m / l); } cout << ans << "\n"; }