the program runs well but doesn't pass verification
"If the entered lines can't be converted to positive integers, throw an exception."
package com.codegym.task.task14.task1420;
/*
GCD
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Solution {
public static class NumeroNegativo extends Exception {
public NumeroNegativo(String número_negativo) {
super(número_negativo);
}
}
public static void main(String[] args) throws Exception {
int factor = 0;
int exponente = 0;
int result = 0;
Map<Integer, Integer> factoresPrimosN1 = new HashMap<Integer, Integer>();
Map<Integer, Integer> factoresPrimosN2 = new HashMap<Integer, Integer>();
Map<Integer, Integer> factoresComunes = new HashMap<Integer, Integer>();
int n1 = 0;
int n2 = 0;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
n1 = Integer.parseInt(reader.readLine());
n2 = Integer.parseInt(reader.readLine());
if (n1 <= 0 || n2 <= 0)
throw new NumeroNegativo("Número negativo");
result = n1;
for (int i = 1; i <= 2; i++) {
if (i == 1)
result = n1;
else
result = n2;
for (factor = 2; result != 1; factor++) {
while (result % factor == 0) {
result = result / factor;
exponente++;
}
if (i == 1 && exponente != 0)
factoresPrimosN1.put(factor, exponente);
else if (i == 2 && exponente != 0)
factoresPrimosN2.put(factor, exponente);
exponente = 0;
}
}
//seleccionar los factores comunes y sus exponentes menores
for (Map.Entry<Integer, Integer> entrada1 : factoresPrimosN1.entrySet()) {
for (Map.Entry<Integer, Integer> entrada2 : factoresPrimosN2.entrySet()) {
if (entrada1.getKey() == entrada2.getKey()) {
int menorExponente = entrada1.getValue() < entrada2.getValue() ? entrada1.getValue() : entrada2.getValue();
factoresComunes.put(entrada1.getKey(), menorExponente);
}
}
}
//calcular el mcd multiplicando los factores comunes con sus menores exponentes
int mcd = 1;
for (Map.Entry<Integer, Integer> entrada : factoresComunes.entrySet()) {
mcd = (int) (mcd * Math.pow(entrada.getKey(), entrada.getValue()));
}
System.out.println(mcd);
} catch (NumberFormatException e) {
System.out.println("Número inválido");
} catch (IOException e) {
e.printStackTrace();
} catch (NumeroNegativo e) {
System.out.println(e.getMessage());
}
}
}