eXeL@B —› Программирование —› Задачка о простоте чисел |
Посл.ответ | Сообщение |
|
Создано: 21 июня 2012 12:21 · Поправил: ARCHANGEL · Личное сообщение · #1 Всем добрый день. Реализую вероятностный метод проверки чисел на простоту (Миллера-Рабина). В общем и целом не возникает особых проблем, ибо тема распиана во многих монографиях и мануалах, например, ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 21 июня 2012 13:35 · Личное сообщение · #2 |
|
Создано: 21 июня 2012 14:41 · Поправил: VodoleY · Личное сообщение · #3 ARCHANGEL может я чет не понял, но признак делимости число на 2 это его окончание хххх10 в бинарном виде, а недилимость это хххххх1, кагбы все ничетные числа заканчиваюца на 1 в бинарном видел. я когдато курил тему про простые числа.. и самый быстрый контроль при бруте это если число в десятчиной заканчиваеца на 1 3 7 9 , типа все простые числа имеют такое окончание ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 21 июня 2012 15:07 · Поправил: ARCHANGEL · Личное сообщение · #4 VodoleY пишет: но признак делимости число на 2 это его окончание хххх10 в бинарном виде Да, так и есть. Для переменных целого типа. А когда мы имеем дело с вещественными числами, то в памяти оно хранится как BCD упакованное, т.е. нельзя просто проверить его младший разряд, или считать старший, чтоб узнать наиболее близкое меньшее число, являющееся степенью двойки. и самый быстрый контроль при бруте это если число в десятчиной заканчиваеца на 1 3 7 9 Но это же ещё не вся проверка. 33 ведь не простое число. З.Ы. Хотя от упакованных чисел, видимо, придётся отказаться. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 21 июня 2012 19:11 · Личное сообщение · #5 ARCHANGEL я собственно о чем пытался сказать.. что есть варианты, когда проверка числа на псевдо простое(с достаточной глубиной), может занять больше времени чем просчет итерации брута с этим числом. НО минимальный тест который пролетает мнгновенно это признак 1 3 7 9 ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... | Сообщение посчитали полезным: ajax |
|
Создано: 25 июня 2012 20:28 · Личное сообщение · #6 |
|
Создано: 25 июня 2012 21:36 · Личное сообщение · #7 |
|
Создано: 25 июня 2012 21:42 · Личное сообщение · #8 Promix_17 В самом алгоритме - ниоткуда, т.к. алгоритм применим на кольце вычетов, которое образовано элементами целых чисел. Но тут есть одно но. По логике 8-байтовый double должен вмещать бОльшие целые значения, нежели 4-байтовый DWORD. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 25 июня 2012 22:12 · Личное сообщение · #9 Лучше б __int64 заюзал, он целый и вопросов не создаст. Ну или его же unsigned. И тоже 8 байтов. И никаких проблем с корявым представлением, типа что упакованный. Накой там дабл, непонятно. | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 25 июня 2012 22:14 · Личное сообщение · #10 |
|
Создано: 25 июня 2012 22:20 · Поправил: Promix_17 · Личное сообщение · #11 VodoleY пишет: Promix_17 ты 4дня думал чтоб процитировать сообщение? - я только зашёл ARCHANGEL пишет: 8-байтовый double должен вмещать бОльшие целые значения, нежели 4-байтовый DWORD 8-байт = 64 бита - как-то слабо... Т.е. если это что-то для RSA или т.п., то надо будет самому работу с большими числами пилить. | Сообщение посчитали полезным: DimitarSerg |
|
Создано: 26 июня 2012 09:22 · Личное сообщение · #12 Promix_17 все реализации алгоритмов, работающих с большими числами, используют дополнительные библиотеки для работы с большими числами. Для делфи это FGInt(стабильная, но скудная) DFFLibV13 (малеха подглючивает, отписал афтору обещал исправить) для си это BigDigits-2.3.0(сам юзать не пробывал). Есть еще реализованные базовые функи на асме (сложение умножение деление и т.д) ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 26 июня 2012 10:21 · Поправил: F_a_u_s_t · Личное сообщение · #13 VodoleY Для С/С++ реализаций чуть меньше чем докуя, длинка даже в boost входит. Add: Может пригодится |
|
Создано: 26 июня 2012 11:16 · Личное сообщение · #14 |
eXeL@B —› Программирование —› Задачка о простоте чисел |