View Code of Problem 3836

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

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

int main() {
	int m, n;
	while (scanf("%d %d", &m, &n) != EOF) {
		if (m > n) {
			int temp = m;
			m = n;
			n = temp;
		}
		int k = n / m;
		int a = 0, b = 0, min = 99999, sum = 0;
		for (int i = 1;i <= sqrt(k);i++) {
			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("%d %d\n", a, b);
	}
}

Double click to view unformatted code.


Back to problem 3836