НОД находит корректно, но не понимаю, почему не проходит 3-й пункт
package com.javarush.task.task14.task1420;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Objects;
/*
НОД
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int number1 = Integer.parseInt(reader.readLine());
int number2 = Integer.parseInt(reader.readLine());
System.out.println(nod (number1, number2));
}
public static ArrayList<Integer> factors (int num) {
ArrayList<Integer> res = new ArrayList<>();
while (true) {
if (num % 2 == 0) {
res.add(2);
num = num / 2;
} else if (num % 3 == 0) {
res.add(3);
num = num / 3;
} else if (num % 5 == 0) {
res.add(5);
num = num / 5;
} else if (num % 7 == 0) {
res.add(7);
num = num / 7;
} else if (!(num == 1)){
res.add(num);
break;
} else {break;}
}
return res;
}
public static int nod (int number1, int number2) throws IllegalAccessException {
if (number1 == 0 ||0 == number2) {
return 0;
}
ArrayList<Integer> factors1 = factors(number1);
ArrayList<Integer> factors2 = factors(number2);
// for (int i = 0; i < factors1.size(); i++) {
// System.out.println(factors1.get(i));
// }
// for (int i = 0; i < factors2.size(); i++) {
// System.out.println(factors2.get(i));
// }
ArrayList<Integer> factors3 = new ArrayList<>();
for (Integer integer : factors1) {
for (int j = 0; j < factors2.size(); j++) {
if (Objects.equals(integer, factors2.get(j))) {
factors3.add(integer);
factors2.remove(j);
break;
}
}
}
int res = 0;
if (factors3.size() > 1) {
res = factors3.get(0);
for (int i = 1; i < factors3.size(); i++) {
res = res * factors3.get(i);
}
} else if (factors3.size() == 1) {
res = factors3.get(0);
}
return res;
}
}