View Code of Problem 3836

import java.util.Scanner;
 
 
public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		while (scan.hasNext()) {
			long gcd = scan.nextLong();
			long lcm = scan.nextLong();
			long multi = gcd*lcm;
			long min = Long.MAX_VALUE;
			long a = 0;
			long b = 0;
			for (long i = gcd; i <= Math.sqrt(multi); i++) {
				if (multi%i == 0&&f(multi/i,i) == gcd) {
					if (multi/i+i<min) {
						a = i;
						b = multi/i;
						min = a+b;
					}
				}
			}
 
			System.out.println(a+" "+b);
			
		}
	}
 
	private static long f(long l, long i) {
		while (l%i != 0) {
			long tmp = l%i;
			l = i;
			i = tmp;
		}
		return i;
	}
}

Double click to view unformatted code.


Back to problem 3836