Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
public static int gcd(int a, int b) {
if (a <= 0 || b <= 0) {
throw new IllegalArgumentException();
}
...
}
Наибольший общий делитель существует и однозначно определён, если хотя бы одно из чисел m или n не ноль.
a < 0 || b < 0
, в случае с нулем все нормально отработаетRegrettably, there seems to be no general agreement about whether to include 0 in the set of natural numbers.
int ans = gcd(Math.abs(a), Math.abs(b));
long gcd(long x,long y){
ulong a=x,b=y;
if(x<0) a=-a;
if(y<0) b=-b;
while(b!=0){
ulong t=a%b;
a=b;
b=t;
}
return (long)a;
}
Вычисление НОД — ошибка, которой не замечают