1 / 1 / 2
Регистрация: 07.10.2013
Сообщений: 170
|
||||||
1 | ||||||
Расширенный алгоритм Евклида26.02.2014, 00:00. Показов 31504. Ответов 15
Метки нет (Все метки)
Здравствуйте, форумчане! Подскажите пожалуйста как реализовать такое задание(код самого алгоритма Евклида прилагается): Программа должна предусматривать ввод исходных данных: двух неотрицательных чисел, модуля и выдачу результата: обратной величины по модулю.
насколько я понимаю, то мы должны каким-то образом возвращать х и у
0
|
26.02.2014, 00:00 | |
Ответы с готовыми решениями:
15
Расширенный алгоритм Евклида RSA, Расширенный алгоритм Евклида. Код на С++ Алгоритм Евклида Алгоритм Евклида |
65 / 64 / 33
Регистрация: 25.02.2014
Сообщений: 229
|
|||||||||||
26.02.2014, 01:15 | 2 | ||||||||||
Реализацию тяжко. А вот пояснить, что делать могу.
b - обратный к a по mod m, если a*b = 1 mod m (a,m) - НОД чисел При помощи алгоритма Эвклида можно найти НОД этих чисел. Если (a,m)=d>1 (числа не взаимно простые), то a не имеет обратной величины по модулю m. Если (a,m)=d=1, то при помоши расширенного алгоритма эвклида представляем НОД в виде ax+my=d, где d = 1 (см. строкой выше) Т.е. будет равенство ax+my=1 mod m Не трудно видеть, что my-делится на m, т.е. my=0 mod m Тогда: ax=1 mod m, т.е. найденное число x будет обратным элементом. Теперь Расширенный алгоритм эвклида: 1. Прямой ход (Собственно обычный алгоритм эвклида). Приведу короткий пример, будем считать, что алгоритм закончит работу за 3 шага (справа пример на числах a=5, m=7).
Начинаем выражать остатки с конца (со второго снизу кравнения) и подставлять в уравнения выше
0
|
1 / 1 / 2
Регистрация: 07.10.2013
Сообщений: 170
|
||||||
26.02.2014, 18:55 [ТС] | 3 | |||||
vasiatka, так будет правильно или нет?
0
|
65 / 64 / 33
Регистрация: 25.02.2014
Сообщений: 229
|
|
26.02.2014, 21:35 | 4 |
Как я понял сам алгоритм ты взял тут http://www.cyberguru.ru/cpp-so... klida.html.
Только что нашел. Вроде похоже. Только если нод отличен от 1 возвращай отрицательное число. Далее при выводе Если твоя функция вернула отрицательное число, то пиши обратного нет.
0
|
7786 / 6554 / 2983
Регистрация: 14.04.2014
Сообщений: 28,628
|
||||||
20.12.2015, 11:52 | 6 | |||||
0
|
20.12.2015, 12:51 | 7 |
Я верно понял что это расширенный алгоритм евклида? Новичок в с++..можно с 10по 18строку коменты дать?
Добавлено через 10 минут Спасибо за решение. Но суть задания в том чтобы алгоритм Поиска нод расписать,а не готовую функцию применить)
0
|
7786 / 6554 / 2983
Регистрация: 14.04.2014
Сообщений: 28,628
|
|
20.12.2015, 13:40 | 8 |
В функции и есть решение. Расписывай.
0
|
7786 / 6554 / 2983
Регистрация: 14.04.2014
Сообщений: 28,628
|
|
20.12.2015, 14:50 | 10 |
Ну это и есть алгоритм Евклида.
0
|
7786 / 6554 / 2983
Регистрация: 14.04.2014
Сообщений: 28,628
|
|
20.12.2015, 17:58 | 12 |
У меня же работает. Значит, не правильно используешь.
0
|
20.12.2015, 18:06 | 13 |
/ ev4.cpp: определяет точку входа для консольного приложения.
// #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) struct arr3 { int a1, a2, a3; }; // Возвращает набор из трёх чисел - {НОД(a,b), x, y} // Требуется a,b > 0 и a >= b arr3 MCD(int a, int b) { arr3 U = {a, 1, 0}, V = {b, 0, 1}; while (V.a1 != 0) { int q = U.a1 / V.a1 ; arr3 T = {U.a1 % V.a1, U.a2 - q * V.a2, U.a3 - q * V.a3}; U = V; V = T; } return U; } 1>c:\users\александр\documents\visual studio 2010\projects\ev4\ev4\ev4.cpp(10): error C2143: синтаксическая ошибка: отсутствие ";" перед "<class-head>"
0
|
Dimension
594 / 462 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
|
|
20.12.2015, 18:29 | 14 |
херово наверное за 3 года так и не выучить структуру кода
0
|
20.12.2015, 19:41 | 15 | |||||
0
|
7786 / 6554 / 2983
Регистрация: 14.04.2014
Сообщений: 28,628
|
||||||
20.12.2015, 20:12 | 16 | |||||
1
|
20.12.2015, 20:12 | |
20.12.2015, 20:12 | |
Помогаю со студенческими работами здесь
16
алгоритм евклида Визуализировать алгоритм Евклида Необычный алгоритм Евклида Алгоритм Евклида. Переведите с Паскаля на С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |