Пример 8-1. Наибольший общий делитель
Пример 8-1. Наибольший общий делитель
#!/bin/bash
# gcd.sh: поиск наибольшего общего делителя
# по алгоритму Эвклида
# Под "наибольшим общим делителем" (нод) двух целых чисел
#+ понимается наибольшее целое число, которое делит оба делимых без остатка.
# Алгоритм Эвклида выполняет последовательное деление.
# В каждом цикле,
#+ делимое <--- делитель
#+ делитель <--- остаток
#+ до тех пор, пока остаток не станет равным нулю (остаток = 0).
#+ The gcd = dividend, on the final pass.
#
# Замечательное описание алгоритма Эвклида можно найти
# на сайте Jim Loy, http://www.jimloy.com/number/euclids.htm.
# ------------------------------------------------------
# Проверка входных параметров
ARGS=2
E_BADARGS=65
if [ $# -ne "$ARGS" ]
then
echo "Порядок использования: `basename $0` первое-число второе-число"
exit $E_BADARGS
fi
# ------------------------------------------------------
gcd ()
{
# Начальное присваивание.
dividend=$1 # В сущности, не имеет значения
divisor=$2 #+ какой из них больше.
# Почему?
remainder=1 # Если переменные неинициализировать,
#+ то работа сценария будет прервана по ошибке
#+ в первом же цикле.
until [ "$remainder" -eq 0 ]
do
let "remainder = $dividend % $divisor"
dividend=$divisor # Повторить цикл с новыми исходными данными
divisor=$remainder
done # алгоритм Эвклида
} # последнее $dividend и есть нод.
gcd $1 $2
echo; echo "НОД чисел $1 и $2 = $dividend"; echo
# Упражнение :
# --------
# Вставьте дополнительную проверку входных аргументов,
#+ и предусмотрите завершение работы сценария с сообщением об ошибке, если
#+ входные аргументы не являются целыми числами.
exit 0
+=
"плюс-равно" (увеличивает значение переменной на заданное число)
let "var += 5" значение переменной var будет увеличено на 5.
-=
"минус-равно" (уменьшение значения переменной на заданное число)
*=
"умножить-равно" (умножить значение переменной на заданное число, результат записать в переменную)
let "var *= 4" значение переменной var будет увеличено в 4 раза.
/=
"слэш-равно" (уменьшение значения переменной в заданное число раз)
%=
"процент-равно" (найти остаток от деления значения переменной на заданное число, результат записать в переменную)
Арифметические операторы очень часто используются совместно с командами expr и let.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Общий интерфейс к файловым системам
Общий интерфейс к файловым системам Подсистема VFS — это связующее звено, которое позволяет таким системным вызовам, как open(), read() и write(), работать независимо от файловой системы и физической среды носителя информации. Сегодня это может не впечатлять, поскольку такая
6.2.4. Общий доступ
6.2.4. Общий доступ Чаще всего, на сервере необходима директория, через которую любой пользователь сможет обмениваться файлами с другими участниками сети. Для настройки такой папки используется секция [tmp]:;[tmp]; comment = Temporary file space; path = /tmp; read only = no; public = yesПо умолчанию секция
Общий анализ портала-конкурента
Общий анализ портала-конкурента Еще раз приведем список характеристик и факторов, на которые следует обратить внимание, анализируя портал-конкурент:? структура сайта, его разделы и сервисы;? типы и источники контента;? семантическое ядро;? присутствие в социальных медиа;?
Общий штат портала
Общий штат портала Несмотря на то что существуют порталы, созданные и поддерживаемые одним или двумя энтузиастами, обычно для их эффективной работы необходим целый коллектив. Его численность зависит от финансовых возможностей и поставленных задач. Следует отметить, что
Общий анализ сайта
Общий анализ сайта Сбор информации о проекте от клиента. Для того чтобы работа велась эффективно, необходимо изучить историю проекта и его текущее состояние. Чем больше данных предоставит клиент, тем более эффективной будет ваша работа, так как вы сумеете изучить
§ 166. Воздух общий
§ 166. Воздух общий 30 сентября 2010В школе любили помахать руками прямо перед лицом одноклассника со словами «Воздух общий!». Любой воспринимал подобное обращение как унизительное, хотя формально к нему никто не прикасался и не оскорблял.Раздражение и неприязнь вызывает
Общий вид программы
Общий вид программы Раздел Interface (Интерфейс) (рис. 7.2) позволяет определить общий вид программы InDesign. Рис. 7.2. Настройки раздела Interface (Интерфейс)Раскрывающийся список Floating Tools Palette (Плавающая панель инструментов) позволяет выбрать один из трех режимов отображения панели:
Общий вид интерфейса
Общий вид интерфейса Первого же взгляда на программу Adobe Photoshop (рис. 6.1) достаточно, чтобы увидеть знакомые элементы управления: кнопки управления окном, строку меню, полосы прокрутки у отдельных окон. В то же время есть и полностью незнакомые элементы. Мы рассмотрим их
Общий порядок работы
Общий порядок работы Существует общий порядок работы над любым проектом в трехмерном реакторе. Он закрепляет наиболее удобную последовательность выполнения действий по созданию сцены.Над каким бы проектом мы не работали, будь то интерьер или архитектура, видеоролик
Общий принцип работы с программой
Общий принцип работы с программой Выше было отмечено, что весь принцип работы (проектирования и моделирования) с программой ArCon построен на объектно-ориентированном подходе. Попробуем разобраться, что именно подразумевается под таким
Общий доступ к файлам в Windows 7 и ХР
Общий доступ к файлам в Windows 7 и ХР Общий доступ к папкам между двумя компьютерами под управлением Windows 7 с новой функцией Home Group — простейший процесс, но HomeGroup несовместима с Vista и XP. При написании этой инструкции мы использовали Windows 7 x64 RC1 и XP Professional SP3, соединенные через
Общий репозиторий
Общий репозиторий Общий репозиторий обеспечивает прием сертификатов и списков САС от доменов нескольких PKI. Хранение и управление данными в нем осуществляется таким образом, чтобы домены других PKI могли использовать эту информацию. Общий репозиторий может быть