#!/bin/bash # Функция для нахождения наибольшего общего делителя (НОД) с помощью алгоритма Евклида gcd() { local a=$1 local b=$2 while [ $b -ne 0 ]; do local temp=$b b=$((a % b)) a=$temp done echo $a } # Функция для нахождения наименьшего общего кратного (НОК) lcm() { local a=$1 local b=$2 # Проверка на ноль if [ $a -eq 0 ] || [ $b -eq 0 ]; then echo 0 return fi # Берем абсолютные значения a=${a#-} b=${b#-} local gcd_value=$(gcd $a $b) echo $((a * b / gcd_value)) } # Основная часть скрипта if [ $# -ne 2 ]; then echo "Использование: $0 <число1> <число2>" echo "Пример: $0 12 18" exit 1 fi # Проверка, что аргументы являются числами if ! [[ $1 =~ ^-?[0-9]+$ ]] || ! [[ $2 =~ ^-?[0-9]+$ ]]; then echo "Ошибка: Аргументы должны быть целыми числами" exit 1 fi # Вычисление НОК result=$(lcm $1 $2) echo "Наименьшее общее кратное (НОК) чисел $1 и $2 = $result"