Compare commits
2 Commits
feature/gc
...
3da152463e
| Author | SHA1 | Date | |
|---|---|---|---|
| 3da152463e | |||
|
|
4f836ba8f1 |
46
script_LCM.sh
Executable file
46
script_LCM.sh
Executable 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"
|
||||
|
||||
Reference in New Issue
Block a user