Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 1
Регистрация: 01.05.2014
Сообщений: 94

Вычисление НОД. Рассмотреть три способа построения НОД

16.02.2017, 13:26. Показов 3936. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. Вычисление НОД чисел m и n при помощи алгоритма Евклида

Шаг 1 Если n = 0, вернуть m в качестве ответа и закончить работу; иначе nерейти к шагу 2.
Шаг 2 Поделить нацело m на n и присвоить значение остатка переменной г.
Шаг 3 Присвоить значение n переменной m, а значение г — переменной n.
Перейти к шагу 1.

Запишем этот же алгоритм в виде псевдокода.
Алгоритм Euclid (m, n)
//Алгоритм Евклида вычисляет значение функции gcd (m, n)
// Входные данные: два неотрицательных целых числа m и n,
// которые не могут одновременно быть равны нулю
// Выходные данные: наибольший общий делитель чисел m и n
while n ≠0 do
г ← m mod n
т ← n
n ← г
return m

2. Вычисление НОД чисел m и n методом последовательного перебора

Шаг 1 Присвоить значение функции min {m, n} переменной t.
Шаг 2 Разделить m на t. Если остаток равен нулю, перейти к шагу 3; иначе
перейти к шагу 4.
Шаг 3 Разделить n на t. Если остаток равен нулю, вернуть t в качестве ответа
и закончить работу; иначе перейти к шагу 4.
Шаг 4 Вычесть 1 из t. Перейти к шагу 2.

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

3. Вычисление НОД чисел m и n "школьным" методом (разложение на простые множители)

Шаг 1 Разложить на простые множители число m.
Шаг 2 Разложить на простые множители число n.
Шаг 3 Для простых множителей чисел m и n, найденных на шаге 1 и 2, выделить их общие делители. (Если р является общим делителем чисел m и n и встречается в их разложении на простые множители, соответственно, рm и рn раз, то при выделении нужно повторить это min { рm, рn } раз-)
Шаг 4 Вычислить произведение всех выделенных общих делителей и вернуть его в качестве результата поиска НОД двух указанных чисел.

Таким образом, для рассмотренной выше пары чисел (60,24), получим:
60 = 2 • 2 • 3 • 5
24 = 2 • 2 • 2 • 3
gcd(60,24)=-- 2• 2• 3 = 12.

Задание
1. Реализовать алгоритмы средствами С++.
2. Сравнить работу алгоритмов для различных исходных данных.
а) Найдите значение функции gcd (31415,14142) при помощи алгоритма Евклида.
б) Оцените, во сколько раз быстрее вычисляется значение функции gcd (31415,14142) при помощи алгоритма Евклида по сравнению с алгоритмом последовательного перебора чисел сверху вниз от значения min {m, n} до значения gcd (m, n).
в) Найдите нод(1 801 768 290, 1 294 654 057).
3. Докажите, что для любых двух положительных чисел m, n выполняется равенство gcd (m, n) = gcd (n, m mod n).
4. Что произойдет, если при использовании алгоритма Евклида первое из чисел будет меньше второго? Каково будет максимальное время выполнения алгоритма при подстановке таких входных данных?
5. а) При каких значениях входных параметров m, n в алгоритме Евклида выполняется минимальное количество операций деления, при условии, что 1 <=m, n<= 10?
б) При каких значениях входных параметров m, n в алгоритме Евклида выполняется максимальное количество операций деления, при условии, что 1 <=m, n<= 10?
6. а) В своем трактате Евклид описал алгоритм поиска НОД, в котором вместо операций целочисленного деления используются операции вычитания. Запишите этот вариант алгоритма Евклида на псевдокоде.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2017, 13:26
Ответы с готовыми решениями:

Подскажите где ошибка в нахождени НОД. Вводятся два числа a b и они должны лежать в промежутке d1 d2. с-НОД
#include &quot;stdafx.h&quot; #include #include #include #include #include #include // для system using namespace std; int...

Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД......
Заданы натуральные числа m и n. Найти НОД(m,n) Составить программу которая будет содержать рекурсивную функцию вычисления НОД, которая...

Вычисление НОД
Составить программу для вычисления НОД двух натуральных чисел вот еще одна програмка.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2017, 13:26
Помогаю со студенческими работами здесь

вычисление нод
int nod(int x, int y) { if ((y == 0) || (x==0)) return x; else return nod(y, x % y); ...

Вычисление НОД и НОК
Нужно написать программу по вычислению НОД и НОК. Мысли проскакивают, но не полное решение). Подскажите кто сможет, только не кидайте...

Рекурсия: вычисление НОД
Даны натуральные числа n,m; найти НОД(n,m). Использовать программу, включающую рекурсивную процедуру вычисления НОД, основанную на...

Вычисление НОД рекурсией!
Программа которая вычисляет наибольший общий делитель НОД двух чисел #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

Вычисление НОД ряда натуральных чисел
Даны натуральные числа m, n1,...,nm (m&gt;=2). Вычислить НОД (n1,...,nm), воспользовавшись для этого соотношением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru