|
|
||||||||||||||||
Быстрая проверка натурального числа на простоту29.09.2012, 21:35. Показов 146441. Ответов 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 | |
|
Проверка числа на простоту Проверка числа на простоту Проверка числа на простоту
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|