|
|
||||||||||||||||
Быстрая проверка натурального числа на простоту29.09.2012, 21:35. Показов 146699. Ответов 121
Метки нет (Все метки)
Часто возникает задача проверки натурального числа на простоту. При этом имеются вероятностные и детерминированные методы проверки. Здесь рассматриваются только детерминированные алгоритмы, дающие 100% ответ на вопрос о простоте.
Хорошо известно такое утверждение: если натуральное число n>1 не делится ни на одно простое число, не превосходящее
33
|
||||||||||||||||
| 29.09.2012, 21:35 | |
|
Ответы с готовыми решениями:
121
Проверка на простоту числа Проверка числа на простоту Проверка числа на простоту |
|
24 / 3 / 0
Регистрация: 28.10.2012
Сообщений: 35
|
||||||||||||||||
| 01.11.2012, 19:26 | ||||||||||||||||
|
ValeryS, да, я там потом решил этот вопрос, все дело было в этом операторе:
Thinker, в общем написал алгоритм, может его стоит оптимизировать, потому что по скорости он проигрывает в 8 раз! и уже для 128 битных чисел нужно много времени. Даже для числа 265 252 859 812 191 058 636 308 479 999 999 (11*3 = 33 знака) нужно проверить 1,6 * 1016 делителей. И если скорость 2 * 109 / сек, то получаем 1,6 * 1016 / (2 * 109) = 8 * 106 сек или 92 дня. Вот собственно функции: mask[i] хранит заранее записанную маску, у которой все единицы начиная от самого левого бита и до i, или по простому - выделяем i бит слева.
0
|
||||||||||||||||
|
|
|
| 01.11.2012, 19:39 [ТС] | |
|
AEXks, ну, ваше стремление похвально, но а на что вы расчитывали, используя длинную арифметику и алгоритм проверки на простоту экспоненциальной сложности относительно количества цифр. Так и должно быть, поэтому я побаловался этим и забросил))
Вы поймите, алгоритм должен зависеть не от аппаратуры (CPU, GPU и т.д.), а от теоретической сложности, а иначе смысла не было бы во многих криптоалгоритмах
0
|
|
|
24 / 3 / 0
Регистрация: 28.10.2012
Сообщений: 35
|
|
| 01.11.2012, 19:43 | |
|
так алгоритм АКС быстрее это делает?
0
|
|
|
|
|
| 01.11.2012, 19:45 [ТС] | |
|
если честно, то не знаю, времени не было его проверить. но у него заявленная сложность полиномиальная относительно количества цифр, то есть обещает быть быстрым. но оять же, не настолько быстрым, чтобы какие-то криптоалгоритмы упали бы.
0
|
|
|
24 / 3 / 0
Регистрация: 28.10.2012
Сообщений: 35
|
|
| 01.11.2012, 20:22 | |
|
Thinker, может попробуете тогда для CPU реализовать хотя бы?
0
|
|
|
|
|
| 01.11.2012, 21:03 [ТС] | |
|
надо будет теоремы почитать с доказательствами, а иначе нет смысла алгоритм составлять. будет время, посмотрю. с другой стороны, почему его так и не реализовали, по крайней мере, не видел реализацию. это, наверное, потому что есть гипотеза (недоказанная), которая значительно ускоряет алгоритм AKS
0
|
|
|
24 / 3 / 0
Регистрация: 28.10.2012
Сообщений: 35
|
|
| 01.11.2012, 21:34 | |
|
Thinker, на паскале вроде говорят есть реализация
0
|
|
|
24 / 3 / 0
Регистрация: 28.10.2012
Сообщений: 35
|
|
| 01.11.2012, 21:47 | |
|
Thinker, они же не дают точный результат
0
|
|
|
24 / 3 / 0
Регистрация: 28.10.2012
Сообщений: 35
|
|
| 01.11.2012, 21:50 | |
|
Thinker, а вероятностные на много быстрее?
0
|
|
|
Котовчанин
|
||||||
| 22.01.2014, 18:38 | ||||||
|
Написала когда-то программку, которая, с использованием решета Эратосфена, находит все простые и возвращает самый большой простой делитель числа.
Код не идеален, потому как новичок ещё я, но работает быстро.Буду рада советам!
0
|
||||||
|
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
|
|||||||
| 18.07.2014, 12:07 | |||||||
А ещё на AMD есть какой-то сумасшедший набор инструкций - TBM, возможно его удастся применить к этой задаче.
0
|
|||||||
|
Master of Orion
|
||||||
| 18.07.2014, 12:34 | ||||||
|
Мне кажется, простейший способ - написать прогармму с кодогенерацией, которая сгенерирует метод, который будет проверять все числа
Например взять первые 100 простых чисел, и сгенерировать файлик, где
0
|
||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
|||
| 18.07.2014, 12:48 | |||
|
да и речь то идет не о первых 100 числах а о числах порядка 264 и выше ![]() решалась задача в общем
0
|
|||
|
Master of Orion
|
|
| 18.07.2014, 12:57 | |
|
ValeryS, да, я видел. Но вопрос именно в кодогенерации
Прочем не важно. В любом случае для достаточно больших чисел погрешность не даст нормально сказать, какое это число (double без потерь показывает лишь 15 знаков же), а для длинной арифметики слишком много всего писать надо. Вот в лиспе....
0
|
|
|
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
|
|
| 15.06.2015, 15:03 | |
|
а можно добавить условие в начало:
if(n%6==1 || n%6==5) return не простое else проверять по другому ну и проверять при помощи деления на числа удовлетворяющие условию Добавлено через 2 минуты переходите на java или python, на java есть BigInt, а на python всё вообще динамически расширяется
0
|
|
|
267 / 256 / 23
Регистрация: 04.04.2012
Сообщений: 546
|
|
| 17.06.2015, 22:55 | |
|
0
|
|
|
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
|
||||||
| 17.06.2015, 23:44 | ||||||
|
Ой, извините, наоборот, там надо так:
0
|
||||||
| 17.06.2015, 23:44 | |
|
Проверка числа на простоту Проверка числа на простоту Проверка числа на простоту
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|