Пачиму?
П.с.
Решал по такому принципу:
Из двух данных чисел большее число делят на меньшее.
Затем, меньшее число делят на остаток, получившийся от деления большего числа на меньшее.
Далее, первый остаток делят на второй остаток, который получился от деления меньшего числа на первый остаток.
Второй остаток делят на третий, который получился от деления первого остатка на второй и т. д.
Таким образом деление продолжается до тех пор, пока в остатке не получится нуль. Последний делитель как раз и будет наибольшим общим делителем.
package com.javarush.task.task14.task1420;
import java.util.*;
import java.io.*;
/*
НОД
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int ostatokLast=1;
int ostatokNew=1;
int n=1;
int l=1;
int cheliy=1;
int nod=1;
int x = Integer.parseInt(bf.readLine());
int y = Integer.parseInt(bf.readLine());
if (x<=0 || y<=0) throw new Exception();
if (x>y){
ostatokNew = x-( ((int) x/y) * y );
ostatokLast = y;
cheliy = y;
}
else if (y>x) {
ostatokNew = y-( ((int) y/x) * x );
ostatokLast = x;
cheliy = x;
}
else {
cheliy = y;
}
while(ostatokNew != 0){
cheliy = (int) ostatokLast/ostatokNew;
nod = ostatokNew;
l = ostatokLast;
n = ostatokNew;
ostatokLast = n;
ostatokNew = l-(cheliy*n);
}
System.out.println(nod);
}
}