思路:
b是a和c的最大公约数,即 c 是 b (和a) 的整数倍 ;
又c不等于b,即c可能是b的2倍大,3倍大,4倍大。。。;
c每次自增b,直到"a和c的最大公约数为b"这一条件满足,此时c即为所求值的最小。
#include<iostream>
using namespace std;
int gcd(int a, int b)
{
return b ? gcd(b, a%b) : a;
}
int resultgcd(int a,int b)
{
int i;
for (i = 2*b;; )
{
if (gcd(a,i)==b)
{
break;
}
else
{
i = b + i;
}
}
return i;
}
int main()
{
int a, b, c;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a >> b;
cout << resultgcd(a, b)<<endl;
}
return 0;
}