![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
![]()
Появилась такая проблема, нигде не могу найти рабочей реализации вероятностного теста числа на простоту Миллера-Рабина. В сети имеется псевдокод на него, пробовал делать по нему но не выходит, думаю что есть какая-то ошибка в самом псевдокоде. Может кто сможет помочь в этом вопросе? Мне не обязательно выполнять операции с длинными числами, хотя бы те что входят в диапазон long... Желательно код на C++
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
![]() |
![]() |
![]() |
#2 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
![]()
вот мой код который в принципе не работает...
Код:
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. Последний раз редактировалось Sazary; 27.04.2010 в 19:56. |
![]() |
![]() |
![]() |
#3 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
![]()
Проблема решилась не успев начаться ))))
В строке: x=long(pow(a,pow(2,k)*t))%m; происходил выход за границы типа long, максимальное простое число, которое удается проверить без выхода за границы типа 17... А кто-нибудь может сделать то же самое но на языке maple?
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
![]() |
![]() |
![]() |
#4 | |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
![]() Цитата:
x=(x*x)%m; - результат тотже
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
|
![]() |
![]() |
![]() |
#5 |
Я
Форумчанин
Регистрация: 24.04.2010
Сообщений: 693
|
![]()
в этой строке выполняется возведение в степень, опять таки получается большое число, вот фрагмент как от этого избавиться, но появляется большая проблема с временем выполнения программы числа порядка 10^10 проверяет около 3 минут... может кто поможет еще как-нибудь оптимизировать...
сразу скажу что в С++ такие числа проверить не сможете, я делал в maple... моя цель: проверять числа порядка 10^300, ну или хотя бы 10^100 ![]() x=1; while (t>0) {x=(x*a)%m; t--; }
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм поиска текста Рабина на Delphi 7 выходит ошибка | Des | Общие вопросы Delphi | 14 | 15.05.2012 11:14 |
Алгоритм Кнута-Морриса-Пратта или Рабина-Карпа (язык С++). Может у кого-нибудь есть готовый рабочий ? | Беата | Помощь студентам | 7 | 27.03.2010 10:50 |
Создание теста | VeraN | Помощь студентам | 0 | 23.11.2009 18:03 |
алгоритм рабина-карпа(поиск подстроки) | kristy42 | Помощь студентам | 0 | 03.11.2009 18:41 |
Алгоритмы Рабина - Карпа | Volchara | Общие вопросы C/C++ | 0 | 24.04.2009 16:40 |