|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
В вики есть статья про решето Эратосфена – алгоритм нахождения всех простых чисел до некоторого целого р : https://ru.wikipedia.org/wiki/Решето_Эратосфена Там же описан псевдокод поиска простых чисел: Вход: натуральное число n Пусть A — булевый массив, индексируемый числами от 2 до n, изначально заполненный значениями true. для i := 2, 3, 4, ..., пока i2 ≤ n: если A[i] = true: для j := i2, i2 + i, i2 + 2i, ..., пока j ≤ n: A[j] := false Выход: числа i, для которых A[i] = true. Есть упрощения алгоритма: - поиск идет только по нечетным числам; - поиск идет начиная с квадрата числа. В комментариях к сообщению https://habr.com/ru/post/124605/ нашел следующее упрощение: «Также обычно рассматривают числа виде 6k, 6k+1, 6k+2,6k+3,6k+4,6k+5. Здесь 6=2*3 произведению первых двух простых чисел. Из них 6k, 6k+2,6k+3,6k+4 делятся на 2 или 3. Поэтому надо проверять на простоту только числа вида 6k+1, 6k+5 (33.3% от всех). Это можно обобщить: например, рассматривая числа вида 30k, 30k+1,… Но это становится громоздким при программирование и дает малый выигрыш 30k+1, 30k+7, 30k+11, 30k+13, 30k+17, 30k+19,30k+23, 30k+29 (26.6% от всех)» Может быть, я что-то пропустил. Битовые варианты специально не рассматривал. Пятничная задачка в следующем: как ещё можно упростить (или усложнить!) как алгоритм, так и массив для алгоритма таким образом, чтобы за определенный период времени можно будет найти большее количество простых чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 12:47 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy Usovкак ещё можно упростить (или усложнить!) как алгоритм, так и массив для алгоритма таким образом, чтобы за определенный период времени можно будет найти большее количество простых чисел. Взять готовый список простых чисел. Он точно имеет наибольшее число сильно дальше, чем, чем размер булевого массива в памяти обычного писюка. Да и необычного, скорее всего, тоже. А промежутки в простых числах начинаются где-то очень-очень далеко по меркам, например, 64-битных чисел. Перебор здесь как бы давно сделан. Поэтому нужно сам принцип поиска менять. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 14:45 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
alex55555Перебор здесь как бы давно сделан. Поэтому нужно сам принцип поиска менять.И я за то. В одном из сообщений, как было сказано в первом сообщении данного топика: авторЭто можно обобщить: например, рассматривая числа вида 30k, 30k+1,… Но это становится громоздким при программирование и дает малый выигрыш 30k+1, 30k+7, 30k+11, 30k+13, 30k+17, 30k+19, 30k+23, 30k+29 (26.6% от всех)»Здесь известны 8 реперных точек. Если взять от 210k до 210k +209, то будет 46 реперных точек, и будет 22,7% от всех. То есть, при определении простых чисел рассматриваются только 22,75 от всех чисел р. Пока не вижу громоздкость. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 15:16 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
В предыдущем сообщении ошибся - 43 реперные точки. И искать простые числа будем только среди 20,5% всех чисел. Можно идти дальше. Получаем 341 реперную точку для последовательности от 2310k+1 до 2310k+2309. Применение этой последовательности позволит рассматривать только 15% всех чисел для нахождения всех простых чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 17:09 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Тут обсуждали эту тему https://www.sql.ru/forum/1149455/generator-prostyh-chisel-do-10-9-za-5-sek ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 18:51 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
В настоящее время программ по определению простых чисел - полно. Наверное, многие когда-то попробовали определить некоторое количество таких чисел. Все эти программы упираются в одно: за определённое время можно провести проверку чисел только до некоторого числа. А хочется увеличить количество определяемых чисел. Поэтому, наверное, интересно найти новые приёмы по увеличению количества определяемых простых чисел за конкретное время. Работа с блоками Ak+B позволяет уменьшить количество чисел (в процентном отношении), среди которых можно вести поиск простых чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 19:08 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy UsovА хочется увеличить количество определяемых чисел.Есть какая-то теорема вероятностной простоты числа. Вроде как доказанная математически, что для простого числа достаточно провести N(len) проверок и все, дальше с вероятностью 100% можно говорить что число простое. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 19:34 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
AklinGennadiy UsovА хочется увеличить количество определяемых чисел.Есть какая-то теорема вероятностной простоты числа. Вроде как доказанная математически, что для простого числа достаточно провести N(len) проверок и все, дальше с вероятностью 100% можно говорить что число простое. можно проверить, что на 100% непростое называется Малая теорема Ферма ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 19:49 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 19:50 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Проблема в том что сложность алгоритма не уменьшается. Начни перебирать вместо подряд каждого - каждое сотое потенциально простое число, получишь ускорение в сто раз, т.е. всего на два порядка, а надо как минимум на 50 порядков ускориться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 19:55 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
AklinGennadiy UsovА хочется увеличить количество определяемых чисел.Есть какая-то теорема вероятностной простоты числа. Вроде как доказанная математически, что для простого числа достаточно провести N(len) проверок и все, дальше с вероятностью 100% можно говорить что число простое.Хорошо. А сколько будет поверок? Это хорошо для очень большого числа, а что будет с рядом стоящими? Вот здесь как раз поможет "рамка" в виде блока Ak+B, которой "накрываем" область чисел над первоначальным числом. И сразу будет видно, какие числа, которые находятся рядом с первоначальным числом, не надо будет рассматривать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 20:09 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Dima TПроблема в том что сложность алгоритма не уменьшается. Начни перебирать вместо подряд каждого - каждое сотое потенциально простое число, получишь ускорение в сто раз, т.е. всего на два порядка, а надо как минимум на 50 порядков ускориться.А кто сказал, что можно посчитать все числа до ... даже представить сложно? Уменьшили время расчетов в сто раз, значит в сто раз больше определили чисел. Уже хорошо. Будем ещё что-то искать. А почему Вы решили, что надо на 50 порядков? Может быть на 1000 порядков? Или на 10 порядков? Что там говорит криптография? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 20:15 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
kealon(Ruslan)Aklinпропущено... Есть какая-то теорема вероятностной простоты числа. Вроде как доказанная математически, что для простого числа достаточно провести N(len) проверок и все, дальше с вероятностью 100% можно говорить что число простое. можно проверить, что на 100% непростое называется Малая теорема Ферма А почему не применяют тест Ферма, когда надо определить много простых чисел. Здесь говорится, что определили, что число - непростое, но не сказано, что число - простое. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 20:29 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Откуда взято число 100? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 20:51 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy UsovЧто там говорит криптография?А что криптография, зачем там список всех простых? Для RSA нужно ровно два простых числа, причем очень больших и не сильно близких. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2019, 21:33 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
BarloneGennadiy UsovЧто там говорит криптография?А что криптография, зачем там список всех простых? Для RSA нужно ровно два простых числа, причем очень больших и не сильно близких.Уже нашли эти числа? Или нужны числа на каждый день? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 06:27 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
maytonОткуда взято число 100?Вопрос к какому сообщению? И если не 100, то что? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 06:29 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy UsovBarloneпропущено... А что криптография, зачем там список всех простых? Для RSA нужно ровно два простых числа, причем очень больших и не сильно близких.Уже нашли эти числа? Или нужны числа на каждый день?На каждый секретный ключ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 06:38 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy UsovРабота с блоками Ak+B позволяет уменьшить количество чисел (в процентном отношении), среди которых можно вести поиск простых чисел.Можно далее строить блоки: 30030k+B, 510510k+B, 9699690k+B, ….., 304250263527210k+B и т.д. При увеличении размера блока можно довести количество проверяемых чисел от всех чисел в последнем варианте до 3%. Дальнейшее увеличение величины блока позволит дальше уменьшать процент количества проверяемых чисел в зависимости от всех чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 09:02 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
BarloneGennadiy UsovУже нашли эти числа? Или нужны числа на каждый день?На каждый секретный ключГде можно найти алгоритм поиска секретных ключей (не программа)? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 09:29 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Это случайные числа. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 10:24 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
maytonЭто случайные числа.Нашли случайное, а оно не простое, Где гарантия, что оно простое? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 10:52 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy UsovmaytonЭто случайные числа.Нашли случайное, а оно не простое, Где гарантия, что оно простое? https://ru.wikipedia.org/wiki/Тест_Миллера_—_Рабина ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 11:42 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
BarloneGennadiy UsovНашли случайное, а оно не простое, Где гарантия, что оно простое? https://ru.wikipedia.org/wiki/Тест_Миллера_—_Рабина А в этой статье написано: "Однако, с его помощью нельзя строго доказать простоту числа". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 11:55 |
|
Пятничная задачка. Алгоритм Эратосфена
|
|||
---|---|---|---|
#18+
Gennadiy UsovBarloneпропущено... https://ru.wikipedia.org/wiki/Тест_Миллера_—_Рабина А в этой статье написано: "Однако, с его помощью нельзя строго доказать простоту числа". Для криптографии приемлемо доказать простоту с вероятностью. Кроме того Миллер-Рабин можно усилить итерациями. Чем больше итераций тем больше вероятность простоты числа приближается к 1 единице. Это возможно и ответ на мой вопрос касательно теста https://habr.com/ru/post/205318/ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2019, 12:53 |
|
|
start [/forum/topic.php?fid=16&fpage=9&tid=1339904]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 541ms |
0 / 0 |