Вроде и считает все правильно и завершается как обычно. Не осталось никаких идей, что еще тут не так
package com.javarush.task.task14.task1420;
/*
НОД
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(buf.readLine());
int b = Integer.parseInt(buf.readLine());
// System.out.println(a);
// System.out.println(b);
if (a <= 0 || b <= 0) throw new ArithmeticException();
else {
ArrayList<Integer> Alist = new ArrayList<Integer>();
int k = 2;
int s = a;
while (k != a) {
if (a == 1) {
Alist.add(a);
break;
}
if (s % k == 0) {
Alist.add(k);
s = s / k;
} else
k++;
}
if (Alist.size() == 0) {
Alist.add(a);
}
// for (int x : Alist) {
// System.out.println(x);
// }
ArrayList<Integer> Blist = new ArrayList<Integer>();
int l = 2;
int t = b;
while (l != b) {
if (b == 1) {
Blist.add(b);
break;
}
if (t % l == 0) {
Blist.add(l);
t = t / l;
} else
l++;
}
if (Blist.size() == 0) {
Blist.add(b);
}
// for (int x : Blist) {
// System.out.println(x);
// }
ArrayList<Integer> Clist = new ArrayList<Integer>();
for (int i = 0; i < Alist.size(); i++) {
for (int j = 0; j < Blist.size(); j++) {
if (Alist.get(i).equals(Blist.get(j))) {
Clist.add(Alist.get(i));
Blist.remove(j);
j++;
}
}
}
if (Clist.size() == 0) {
Clist.add(1);
}
int nod = 1;
for (int j = 0; j < Clist.size(); j++) {
nod = nod * Clist.get(j);
}
// System.out.println(" ");
System.out.println(nod);
}
}
}