Алгоритм Евклида. Наибольший общий делитель Требуется составить программу определения наибольшего общего делителя ( НОД ) двух натуральных чисел. НОД.

Презентация:



Advertisements
Похожие презентации
Алгоритм Евклида Составила: Антонова Е.П. 2009г..
Advertisements

ОперацияMNУсловие 1 ввод M, N M N да 3 M > N > 24да 4 M := M - N M N да 6 M > N > 24нет 7 N := N - M 8.
АЛГОРИТМ ЕВКЛИДА (нахождение наибольшего общего делителя (НОД) двух натуральных чисел)
Тема:Программирование цикла на Паскале На дом: §39-40.
АЛГОРИТМ ЕВКЛИДА. Алгоритм Евклида - это алгоритм нахождения наибольшего общего делителя (НОД) двух целых неотрицательных чисел. Евклид ( до. н.
Задача: даны два числа, найти их наибольший общий делитель.
Знакомство с языком Паскаль Структура программы Ветвление на Паскале Циклические программы Пример линейной программы Пример программы с ветвлением Пример.
Задача: даны два числа, найти их наибольший общий делитель.
Программирование цикла. Алгоритм Евклида. Цель урока: освоить программирование циклов с предусловием на примере Алгоритма Евклида. Мостовая Елена Евгеньевна,
F : = 1 начало да нет конец ввод N вывод F R : = 1 F : = F R R : = R + 1 R < N алг Факториал цел F, N, R ввод N нач кон вывод F нц кц пока R.
Форми представлення алгоритмів. Базові фрагменти схеми алгоритму.
Алгоритм – это детальный план работы исполнителя, это описание последовательности элементарных действий, которые должен совершить исполнитель. Но всякий.
Очень часто приходится повторять определенную часть алгоритма для различных значений аргумента. Для организации таких процессов используется алгоритмы.
Перед работой внимательно прочитай инструкцию! 1. Тест состоит из 4-х вопросов. 2. Внимательно прочитай вопрос. 3. В нижнем левом углу выбери ручку, фломастер.
Алгоритм Евклида. Два варианта решения Программирование. Сочетание циклов и ветвлений. 9 класс Евклид Александрийский ( род. 330 г. до н. э.) - известный.
PASCAL Условный оператор.. Этот оператор используется для выполнения одного из двух возможных вариантов программы. Условный оператор если логическое_условие.
1 Программирование на языке Паскаль Ветвления. 2 Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения:
program Stepeny_a; Uses Crt; var a,b,c : real; begin writeln ( Введите числа a и b ); readln ( a, b ); c := a; while c < b do begin writeln (c:8:2) ;
Алгоритмы работы с величинами Компьютер + система программирования исполнитель Данные Величина ЧисловаяСимвольная Логическая Система команд Переменные.
Условие? Действия1Действия2 данет. Задача С клавиатуры вводятся не равные между собой числа а и b. Большее из этих чисел заменить их суммой, а меньшее.
Транксрипт:

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

Наибольший общий делитель Требуется составить программу определения наибольшего общего делителя ( НОД ) двух натуральных чисел. НОД (12, 18) = 6.

Обозначим исходные данные как М u N. Постановка задачи выглядит следующим образом : Дано : М, N Найти : НОД ( М, N). известен алгоритмический способ решения этой задачи. Называется он алгоритмом Евклида.

Идея алгоритма Евклида если M>N, то НОД ( М, N) = НОД ( М - N, N). Иначе говоря, НОД двух натуральных чисел равен НОД их положительной разности ( модуля их разности ) и меньшего числа.

Пусть К - общий делитель М u N (M> N). Это значит, что М = m К, N = n К, где m, n - натуральные числа, причем m > n. Тогда М - N = К (m - n), откуда следует, что К - делитель числа М - N. Значит, все общие делители чисел М и N являются делителями их разности М - N, в том числе и наибольший общий делитель.

Второе свойство : НОД ( М, М ) = М.

Для " ручного " счета алгоритм Евклида выглядит так : 1) если числа равны, то взять любое из них в качестве ответа, в противном случае продолжить выполнение алгоритма ; 2) заменить большее число разностью большего и меньшего из чисел ; 3) вернуться к выполнению п. 1.

Рассмотрим этот алгоритм на примере М =32, N=24: Получили : НОД (32, 24) = НОД (8, 8) = 8, что верно.

Описание алгоритма Евклида блок - схемой

Программа на АЯ и на Паскале алг Евклид цел М, N нач вывод " Введите М и N" ввод М, N пока М N, повторять нц если M>N то M:=M-N иначе N:=N-M кв кц вывод "НОД=",М кон Program Evklid; var M, N: integer; begin writeln('Введите М и N'); readln(M, N); while MN do begin if M>N then M:=M-N else N:=N-M end; write('Н0Д=',М) end.