/* * @Author: NanoApe * @Date: 2016-07-20 22:18:25 * @Last Modified by: admin * @Last Modified time: 2019-08-24 16:04:17 */ #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i, l, r) for(int i=l; i<=r; i++) #define dow(i, l, r) for(int i=l; i>=r; i--) #define fi first #define se second #define pb push_back #define mp make_pair #define clr(x, c) memset(x,c,sizeof(x)) typedef long long ll; typedef unsigned long long ull; typedef pair Pii; inline int read() { int x=0,f=0; char ch=getchar(); while (ch<'0' || '9' 1000000) break; else { dfs(i+1, p[i]*num, o+1); } } int main() { rep(i, 2, 1000000) if (!b[i]) { p[++cnt] = i; if (1LL*i*i <= 1000000) { for(int a = i*i; a <= 1000000; a += i) b[a] = true; } } dfs(1, 1, 0); rep(i, 2, 1000000) s[i] += s[i-1]; int T = read(); while (T--) { int n = read(), m = read(); if (n > m) swap(n, m); ll ans = 1LL * s[n] * s[m]; rep(i, 2, n) if (c[i]) { int sum_n = 0, sum_m = 0, tmp = i; for(; tmp <= n; tmp += i) sum_n += s[tmp]-s[tmp-1]; for(sum_m = sum_n; tmp <= m; tmp += i) sum_m += s[tmp]-s[tmp-1]; ans += (1LL << c[i]) * sum_n * sum_m * (c[i]&1?-1:1); } printf("%lld\n", ans); } return 0; }