#!/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"