Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы вокруг нас.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
13.11 Mб
Скачать

§ 3. Алгоритмы в математике

Изобилие математических алгоритмов особенно бро­сается в глаза. Приведем наиболее известные из них.

Прежде всего следует указать уже упомянутый алго­ритм сложения положительных десятичных дробей. Не менее известны алгоритмы вычитания положительных десятичных дробей для случая, когда уменьшаемое не больше вычитаемого, умножения положительных десятич­ных дробей «столбиком» (так школьники называют этот алгоритм) и деления положительных десятичных дробей «крючком» (о котором уже упоминалось в § 3 гл. 1).

Эти алгоритмы в свою очередь являются результатами «развития» алгоритмов сложения, вычитания, умножения и деления натуральных чисел. Не очень бросается в глаза, что последние алгоритмы тоже «составные», поскольку построены из более простых. А между тем каждый помнит тот неприятный период своей учебы, когда ему приходи­лось осваивать один из таких простых алгоритмов: «вы­зубривать» таблицу умножения. При этом школьник учился выполнять алгоритм выбора из таблицы умножения произведения по заданным двум положительным целым сомножителям, каждый из которых не превосходит десяти.

Здесь мы встречаемся с новой разновидностью так на­зываемых табличных алгоритмов, имеющих большое прак­тическое и принципиальное значение. Табличный алго­ритм в своей записи содержит таблицу. Если бы мы поже­лали точно сформулировать табличный алгоритм умно­жения, он выглядел бы так:

1. Найти в таблице, указанной в п. 2, столбец соответ­ствующий первому сомножителю. Перейти к п. 3.

2. (Содержит всю таблицу умножения,)

3. В найденном столбце найти строку, соответствующую второму сомножителю, и из нее взять произведение. Конец.

Интересно, что табличный алгоритм умножения яв­ляется не первым подобным алгоритмом, который нам из­вестен. Еще ранее каждый школьник изучает табличные алгоритмы а) сложения натуральных чисел, не превосхо­дящих девяти, и б) вычитания натуральных чисел для случая, в котором уменьшаемое не больше восемнадцати, а вычитаемое не превосходит девяти. Обучение выполне­нию этих табличных алгоритмов оставляет в нашей памяти менее заметные неприятные следы, потому что соответст­вующие таблицы проще, чем таблица умножения. Впрочем, автор до сих пор не забыл, что в то далекое время пред­почитал более простой алгоритм «сложения на пальцах», чем вызывал гнев своих первых учителей.

Может быть, перечисленные алгоритмы в силу своей «избитости» мало интересуют читателя. Но все же их про­смотр позволил нам выделить еще один новый вид алго­ритмов. Рассмотрим теперь более интересные случаи.

§ 4. Алгоритм Евклида

Еще в III в. до н. э. математик Евклид, известный автор первого дошедшего до нас теоретического трактата по математике «Начала», в геометрической форме изложил правило получения наибольшего общего делителя двух натуральных чисел. Идея этого правила (обоснование его корректности) заключается в том, что если z — наибольший общий делитель двух натуральных чисел х и у, то в случае равенства этих чисел он совпадает с любым из них, а в случае их неравенства разность между большим и мень­шим вместе с меньшим имеет тот же самый наибольший общий делитель г. Назовем число, равное тому из двух чисел х, у, которое не меньше другого, их верхней гранью и обозначим g, а второе обозначим h. После вычитания одного числа из другого получим новую пару чисел g h и h, верхняя грань g' которых строго меньше g. Новые числа имеют тот же наибольший общий делитель z. Значит, мы свели задачу к нахождению наибольшего общего де­лителя натуральных чисел, верхняя грань которых меньше первоначальной.

Повторяя прием, мы должны в конце концов прийти к случаю, когда новые полученные натуральные числа между собой равны, так как безграничное число шагов уменьшения верхней грани невозможно (потому что на­туральных чисел, не превосходящих числа g, всего не­сколько).

Сам алгоритм нахождения наибольшего общего дели­теля z двух натуральных чисел х и у (алгоритм Евклида) можно изложить так:

1. Если х>у, то перейти к п. 4, иначе перейти к п. 2.

2. Если у>х, то перейти к п. 5, иначе перейти к п. 3.

3. Считать, что z=x. Конец.

4. От х отнять у и впредь считать, что эта разность является значением х. Возвратиться к п. 1.

5. От у отнять х и впредь считать эту разность значе­нием у. Возвратиться к п. 1.

Можно было бы получить другую разновидность алго­ритма Евклида, если учесть, что деление является много­кратным вычитанием. При этом нужно будет большее из чисел х, у делить на меньшее и остаток в дальнейшем считать значением буквы, которая при этом обозначала делимое.

Это позволит, не меняя первых трех пунктов, прежние пп. 4, 5 заменить следующими:

4. Остаток от деления х на у впредь считать значени­ем х. Перейти к п. 1.

5. Остаток от деления у на х считать новым значени­ем у. Вернуться к п. 1.

Новый алгоритм тоже называют алгоритмом Евклида. Он окажется удобнее первоначального, если для выпол­нения операции деления с остатком мы располагаем, на­пример, настольной клавишной вычислительной машиной.

В алгоритме Евклида мы замечаем интересный прием: изменяя величину, мы сохраняем за ней ее исходное имя. При этом возникает понятие величины, значение которой может изменяться. Пункты алгоритма, изменяющие зна­чения величин, относятся к числу так называемых опера­торов, о которых подробнее мы будем говорить в § 4 гл. 10.