Здесь представлены мои упражнения в программировании на 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));
}
Первое число:
Второе число:
Наибольший общий делитель: