#include<string> #include<cstring> #include<iostream> #include<cstdio> #include<cmath> #include<iomanip> #include<algorithm> using namespace std; int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a%b); } int lcm(int a, int b) { return a * b / gcd(a, b); } int main() { int g, l; while (cin >> g >> l) { int z = g * l; int cnt = 0; int min; int min1, min2; for (int i = 1;i < (int)sqrt(z) + 1;i++) { if (z%i == 0) { int q = z / i; if (gcd(i, q) == g && lcm(i, q) == l) { cnt++; if (cnt == 1) { min = i + q; min1 = i; min2 = q; } if (i + q < min) { min = i + q; min1 = i; min2 = q; } } } } if (min1 > min2) swap(min1, min2); cout << min1 << " " << min2<< endl; } } |
Double click to view unformatted code.