![在这里插入图片描述](https://img-blog.csdnimg.cn/7cb88ff4b88a4630bc2f9e109c9d06cc.png)
#include <bits/stdc++.h>
using namespace std;
vector<int> primes;
vector<bool> st(10010,false);
int main()
{
for(int i=2;i<=10000;i++)
if(!st[i])
{
primes.push_back(i);
for(int j=i*i;j<=10000;j+=i)
st[j]=true;
}
int T;scanf("%d",&T);
while(T--)
{
int x,y;scanf("%d%d",&x,&y);
int d=y-x;
if(d==1)
{
puts("-1");
continue;
}
int ans=1e9;
for(auto i:primes)
{
if(i*i>d) break;
if(d%i==0)
{
while(d%i==0) d/=i;
ans=min(ans,(x+i-1)/i*i-x);
}
}
if(d!=1) ans=min(ans,(x+d-1)/d*d-x);
printf("%d\n",ans);
}
return 0;
}