Пробовал числа большой разрядности - вроде норм
циклов, из которых нельзя выйти, вроде тоже нет
package com.javarush.task.task14.task1420;
/*
НОД
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int first = Integer.parseInt(bufferedReader.readLine());
int second = Integer.parseInt(bufferedReader.readLine());
System.out.println(nod(first, second));
bufferedReader.close();
}
public static int nod(int first, int second) {
ArrayList<Integer> arrayFirstDivide = createArrayDivide(first);
ArrayList<Integer> arraySecondDivide = createArrayDivide(second);
return searchMax(arrayFirstDivide, arraySecondDivide);
}
public static int searchMax(ArrayList<Integer> arrayFirst, ArrayList<Integer> arraySecond) {
ArrayList<Integer> arrayBoth = new ArrayList<>();
for (int i = (arrayFirst.size()-1); i > (-1); i--) {
for (int k = (arraySecond.size()-1); k > (-1); k--) {
if (arrayFirst.get(i) == arraySecond.get(k)) {
arrayBoth.add(arrayFirst.get(i));
}
}
}
return arrayBoth.get(0);
}
public static ArrayList<Integer> createArrayDivide(int n) {
ArrayList<Integer> arrayFirstDivide = new ArrayList<>();
int f = 1;
while ( f != n ) {
if (n % f == 0) {
arrayFirstDivide.add(f);
}
f++;
}
return arrayFirstDivide;
}
}