Находим наибольший общий делитель

Здесь представлены мои упражнения в программировании на TypeScript.

Дональд Кнут советует изучать алгоритмы с нахождения наибольшего общего делителя по алгоритму Евклида. Так и сделаем.

Берем два числа Х и Y. Если Y больше чем Х, меняем их местами.

Делим Х на Y, находим остаток. Если остаток равен нулю, значит Y является НОД. Завершаем поиск.

Если нет, Х присваиваем значение Y, Y присваиваем значение остатка. Повторяем предыдущий пункт.

Повторяем цикл до тех пор, пока Y не станет равен единице, универсальному общему делителю.

Ниже код функции нахождения НОД и реализация. Код работает для целых положительных чисел.

function getNOD(){
    let x: number = Number((document.getElementById("input1") as HTMLInputElement).value);
    let y: number =  Number((document.getElementById("input2") as HTMLInputElement).value);
    let remainder: number;

    if(x < y){
        remainder = x;
        x = y;
        y = remainder;
    }

    function nod(x: number, y: number): number{
    while(y > 1){
        console.log("x = " + x + ", y = " + y);
        remainder = x % y;
        console.log("remainder = " + remainder);
        if(remainder == 0){  // если остаток равен 0 завершаем цикл
            return y;
        }
        x = y;
        y = remainder;
    }
    // остается единица - универсальный общий делитель
        return 1;
    }
    (document.getElementById("input3") as HTMLInputElement).value = String(nod(x, y));
    console.log("вычисленный НОД = " + nod(x, y));
}

Первое число:

Второе число:

Наибольший общий делитель: