diff --git a/script_LCM.sh b/script_LCM.sh new file mode 100755 index 0000000..5000f7d --- /dev/null +++ b/script_LCM.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +# Скрипт для нахождения НОК (наименьшего общего кратного) двух чисел +# НОК(a,b) = |a*b| / НОД(a,b) + +# Проверяем, переданы ли два аргумента +if [ $# -ne 2 ]; then + echo "Использование: $0 <число1> <число2>" + exit 1 +fi + +# Проверяем, являются ли аргументы числами +if ! [[ $1 =~ ^[0-9]+$ ]] || ! [[ $2 =~ ^[0-9]+$ ]]; then + echo "Ошибка: аргументы должны быть неотрицательными целыми числами" + exit 1 +fi + +a=$1 +b=$2 + +# Проверка на ноль +if [ $a -eq 0 ] || [ $b -eq 0 ]; then + echo "НОК($1, $2) = 0" + exit 0 +fi + +# Функция для нахождения НОД с помощью алгоритма Евклида +gcd() { + local x=$1 + local y=$2 + while [ $y -ne 0 ]; do + local remainder=$((x % y)) + x=$y + y=$remainder + done + echo $x +} + +# Вычисляем НОД +gcd_result=$(gcd $a $b) + +# Вычисляем НОК +lcm_result=$(( (a * b) / gcd_result )) + +echo "НОК($1, $2) = $lcm_result" +