From 4f836ba8f1518f1e398e7c7092e792ed7e2f29e6 Mon Sep 17 00:00:00 2001 From: gyg72 Date: Sat, 28 Feb 2026 12:34:44 +0000 Subject: [PATCH] NOK --- script_LCM.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100755 script_LCM.sh 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" + -- 2.49.0