View Code of Problem 1476

#include <stdio.h>
#include <math.h>

long long int gcd(long long int x, long long int y) {
	if (y == 0) {
		return x;
	}
	return gcd(y, x%y);
}

int main() {
	long long int m, n;
	while (scanf("%lld %lld", &m, &n) != EOF) {
		if (m > n) {
			long long int temp = m;
			m = n;
			n = temp;
		}
		long long int k = n / m;
		long long int a = 0, b = 0, min = 99999999, sum = 0;
		for (int i = 1;i <= sqrt(k);i++) {
			long long int x = k / i;
			if (x*i == k && gcd(x, i) == 1) {
				sum = i + x;
				if (min > sum) {
					a = i * m;
					b = x * m;
					min = sum;
				}
			}
		}
		printf("%lld %lld\n", a, b);
	}
}

Double click to view unformatted code.


Back to problem 1476