diff --git a/main.sh b/main.sh new file mode 100755 index 0000000..a78893b --- /dev/null +++ b/main.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Запрашиваем первое число +echo "Введите первое число:" +read num1 + +# Запрашиваем второе число +echo "Введите второе число:" +read num2 + +# Вызываем скрипт НОК и передаем ему числа +./script_nok.sh $num1 $num2 diff --git a/script_nok.sh b/script_nok.sh new file mode 100755 index 0000000..3dadc1a --- /dev/null +++ b/script_nok.sh @@ -0,0 +1,52 @@ +#!/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"