题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2504
解题思路:
由于a和c的最大公约数是b,所以a = xb,b=yb。现在相当于已知x,求y。
我们由上面可知x和y一定是互质的。只要枚举一下最小的与x互质的自然数就是y了,但是题目要求不等于b,所以要加上不相等的条件。。
代码如下:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int Gcd(int m, int n)
{
return m == 0 ? n : Gcd(n % m, m );
}
int main()
{
int ncase;
int a, b, c;
scanf("%d", &ncase);
while(ncase--)
{
scanf("%d%d", &a, &b);
int temp = a / b;
for(int i = 2; ; ++i)
{
if(i * b != b && Gcd(temp, i) == 1)
{
printf("%d\n", i * b);
break;
}
}
}
return 0;
}