题目描述
Kri 喜欢玩数字游戏。
一天,他在草稿纸上写下了 t 对正整数 (x,y),并对于每一对正整数计算出了 z=x×y×gcd(x,y)。
可是调皮的 Zay 找到了 Kri 的草稿纸,并把每一组的 y 都擦除了,还可能改动了一些 z。
现在 Kri 想请你帮忙还原每一组的 y,具体地,对于每一组中的 x 和 z,你需要输出最小的正整数 yy,使得 z=x×y×gcd(x,y)。如果这样的 y 不存在,也就是 Zay 一定改动了 z,那么请输出 -1。
注:gcd(x,y) 表示 x 和 y 的最大公约数,也就是最大的正整数 d,满足 d 既是 x 的约数,又是 y 的约数。
题解:
既然给出了Z和X,那么不妨把X除到左边去,原等式就变成了这样:
观察这个式子,为了方面我们令GCD(X,Y)=d,因为d是X,Y的最大公约数,所以 d|X,d|Y,不妨设