题意:
LCM(A,B) = C;
已知A,C,求最小的B;
思路:
设X为GCD(A,B);
那么C = A * B / X;
所以我们先C/A 然后通过乘以公约数,乘回来:
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int A, B, C;
int main() {
int t;
scanf("%d", &t);
while(t--) {
scanf("%d%d", &A, &C);
if(C % A)
printf("NO SOLUTION\n");
else {
B = C / A;
int f = B;
while(f != 1) {
f = __gcd(A, B);
B *= f;
A /= f;
}
printf("%d\n", B);
}
}
return 0;
}