Решение может и не самое лучшее(Смотрел алгоритм в учебнике математики) но решение все равно не принимает(
package com.javarush.task.task14.task1420;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
import java.io.IOException;
/*
НОД
*/
public class Solution {
public static void main(String[] args) {
try(BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));){
int x = Integer.parseInt(bf.readLine());
int y = Integer.parseInt(bf.readLine());
ArrayList<Integer> resX = razlozh(x);
ArrayList<Integer> resY = razlozh(y);
System.out.println(findNOD(resX,resY));
}catch(IOException e) {
System.out.println(e);
}
}
static int findNOD(ArrayList<Integer> x, ArrayList<Integer> y) {
ArrayList<Integer> resAR = new ArrayList<>();
for(int i=0;i<x.size();i++) {
if(y.contains(x.get(i))) {
for(int j=0;j<y.size();j++) {
if(x.get(i).equals(y.get(j))) {
resAR.add(y.get(j));
y.remove(j);
break;
}
}
x.remove(i);
}
}
int res = 1;
for(int a: resAR) {
res*=a;
}
return res;
}
static ArrayList<Integer> razlozh(int x) {
ArrayList<Integer> result = new ArrayList();
int i = 2;
while(x>1) {
if(x % i ==0) {
result.add(i);
x=x/i;
}else {
i++;
}
}
return result;
}
}