Нет необходимости делать обмен и сравнение. Если необходимо, значения будут исправлены после первой итерации.
Consider l = 24 and s = 36
save = s; save is 36
l %= s; l is still 24
s = l; s is now 24
l = save l is now 36
Модифицированный код
try {
Scanner input = new Scanner(System.in);
long t = input.nextInt();
long l, s, temp;
while (t-- > 0) {
l = input.nextLong();
s = input.nextLong();
long A = s;
long B = l;
// doesn't matter which is larger. It will be corrected
// after the first iteration.
while (s > 0) {
temp = s;
l %= s;
s = l;
l = temp;
}
long lcm = (A / l) * B; // prevents overflow
System.out.println(l + " " + lcm);
}
} catch (Exception e) {
e.printStackTrace();
}
Примечание. Не обязательно, полезно и, как правило, не рекомендуется закрывать сканер, когда он был создан с System.in
. Это потому, что он также закрывает тот входной поток, который больше не будет доступен в течение всей программы.