codeforces 1485C
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//https://codeforces.com/blog/entry/87470
void solve()
{
ll x, y;
cin >> x >> y;
ll ans = 0;
/**[a/b]=a%b=k ((下取整
a=k*b+b 结合a的范围 a<x &&结合 b的范围 b>k =>k*b>k^2
推出k的范围 k*k<x
对于每个k 寻找b 1<=k*b+k<=x 推出 1<=b<=x/k−1 每个b都对应了一种在k确定的情况下的特殊二元对
同时b不能超过Y 所以取了两者最小值
同时b要大于k 所以要去掉b小于k的情况 所以要减去k
对于每个k 种类数目有max(min(y,x/k-1)-k,0)
*/
for(ll i = 1; i*i < x; i++)//i就是题解的k
ans+=max(min(y,x/i-1)-i,0LL);
cout << ans << endl;
return;
}
int main()
{
int T = 1;
cin >> T;
while(T--)
{
solve();
}
return 0;
}