public class GreatestCommonDivisor {
public static int getGreatestCommonDivisor (int first, int second) {
if (first < 10 || second < 10) {
return - 1;
}
int min, max;
if (first < second) {
min = first;
max = second;
} else {
min = second;
max = first;
}
int greatestCommonDivisor = 1;
for (int i = 1; i < min; i++) {
for (int j = i; j < min; j++) {
if ((min % i == 0) && (max % j == 0)) {
greatestCommonDivisor = i;
}
}
}
return greatestCommonDivisor;
}
}
Witam. Mój program wywala się, gdy umieszczę w nim dane 81 i 153. Zwraca wtedy wartość 27 i nie wiem czemu. Przeanalizowałem działanie programu i wg mnie taka sytuacja nie powinna mieć miejsca. W miejscu:
if ((min % i == 0) && (max % j == 0)) {
greatestCommonDivisor = i;
}
kiedy i= 27 i j zaczyna też z wartością 27, to jak jest możliwe, żeby oba warunki zostały spełnione (153 nie dzieli się modulo przez 27) i greatestCommonDivisor przyjął wartość 27?
Pewnie nie widzę jakiegoś mankamentu, ale już nie mam pomysłu.
Proszę i dziękuję za pomoc,
Pozdrawiam