2 Commits

Author SHA1 Message Date
3da152463e Merge pull request 'NOK' (#2) from feature/lcm into main
Reviewed-on: #2
2026-02-28 15:50:09 +03:00
gyg72
4f836ba8f1 NOK 2026-02-28 12:34:44 +00:00
2 changed files with 46 additions and 24 deletions

24
main.sh
View File

@@ -1,24 +0,0 @@
#!/bin/bash
echo "Введите первое число:"
read num1
if ! [[ $num1 =~ ^[0-9]+$ ]]; then
echo "Ошибка: введите неотрицательное целое число"
exit 1
fi
echo "Введите второе число:"
read num2
if ! [[ $num2 =~ ^[0-9]+$ ]]; then
echo "Ошибка: введите неотрицательное целое число"
exit 1
fi
echo "ВВЕДЕННЫЕ ЧИСЛА: $num1 И $num2"
echo "Результат вычисления НОД:"
./script_GCD.sh "$num1" "$num2"
echo "Результат вычисления НОК:"
./script_LCM.sh "$num1" "$num2"

46
script_LCM.sh Executable file
View File

@@ -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"