Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonНам полюбому нужен сценарий теста. Хорошо-бы чтоб все утилиты в STDOUT сбрасывали результат по ключу. Не писать не вариант, компилятор просто выкинет ненужный код и получишь нездоровые замеры. Писать в STDOUT - тормоза от printf() не дадут нормально скорость измерить. Я вектор использую, тоже не совсем корректно, память довыдедеряет, хотя это достаточно быстро, но вообще-то уже С++, а не С. Предлагаю изолировать расчет от хранения результатов. Передавать в параметрах функцию void prime_store(uint64_t x), а дальше подсовывай что хочешь: хоть заглушку со счетчиком, хоть вектор. Пусть только верхний уровень знает что подсунул, а нижний честно ее вызывает. Можно делать вычисления отдельным модулем. Функция. Класс. Компонента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 19:54 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TPS Дурной день был, умотался, все что наобещал сегодня не успею, завтра зафиксирую свои поделки. Да бох с ним. Я не тороплю. Этот проект - Just For Fun. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 20:01 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Мужики, мне кажется до определённого размера простые числа можно не хранить, достаточно перебора 999999937 / 50847534 =19.6 вот смотрите, при натуральном k 6k-1 6k - кратно 2 и 3 6k+1 6k+2 - кратно 2 6k+3 - кратно 3 6k+4 - кратно 2 т.е. все простые числа лежат в множестве 6k+/-1, достаточно проверять 1 из 3-х чисел операции с регистрами гораздо быстрее чем попытки лезть в память ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 20:29 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)все простые числа лежат в множестве 6k+/-1 Сходу могу сказать что ты масштабнее Аткина в 102,4 раза :) У того магическое число было 60. Давай, развивай свою идею до примера кода который можно запустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 20:36 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Мысль: у биткарты есть один большой недостаток, надо перебрать ее целиком чтобы результат получить. Вот бы взамен что-нибудь такое задействовать что быстро инициализируется, быстро убирает лишнее и быстро считывает остатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 20:48 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), добавлю инфы. Это называется Спираль Улама. На ней чёрными точками обозначены primes - белыми все остальные составные числа. При условии что заполнение шло от центра квадрата против часовой стрелки. На спирали отчётливо виден ближний порядок точек. По сути каждая точка в ряду отстоит от другой на строго фиксированное расстояние которое квадратично зависит от "витка спирали". По сути картинка наглядно показывает что существует формула описывающая "возникновение" следующей точки в ряду. Весь вопрос в том насколько далеко распространяется такой порядок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 20:55 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TМысль: у биткарты есть один большой недостаток, надо перебрать ее целиком чтобы результат получить. Вот бы взамен что-нибудь такое задействовать что быстро инициализируется, быстро убирает лишнее и быстро считывает остатки. Это основной дефект Эратосфена. Нам недостаточно иметь карту простых. Нам нужен итератор. А он к сожалению не очень эффективен. И не очень компактен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 21:03 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonkealon(Ruslan), добавлю инфы. Это называется Спираль Улама. https://ru.wikipedia.org/wiki/Скатерть_Улама . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 21:23 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima Tkealon(Ruslan)все простые числа лежат в множестве 6k+/-1 Сходу могу сказать что ты масштабнее Аткина в 102,4 раза :) У того магическое число было 60. Давай, развивай свою идею до примера кода который можно запустить. залейте исходники рабочие того что есть, что бы сравнивать можно было сюда же вроде как решились лить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 21:59 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Это кому как удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 22:10 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima Tkealon(Ruslan)все простые числа лежат в множестве 6k+/-1 Сходу могу сказать что ты масштабнее Аткина в 102,4 раза :) У того магическое число было 60. Давай, развивай свою идею до примера кода который можно запустить. Марк, товарищ привел известный факт, не более ни менее. а 60 скорее всего получено эмпирически, других предположений пока нет, кроме мистицизма об делимости на числа от 1 до 6 ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 01:52 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
А обязательно устанавливать ту программу для совместной работы с репозиторием ? Только через 7 часов смогу этим заняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 06:18 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
SashaMercuryА обязательно устанавливать ту программу для совместной работы с репозиторием ? Только через 7 часов смогу этим заняться Оттуда брать можешь без нее, но обратно что-то заливать без нее не получится. С ней удобнее, меньше кнопок нажимать. maytonЭто называется Спираль Улама. Глянул мельком, интересная метода, но получить все простые с ее помощью будет проблематично. Например посмотри где стоят 15 и 27. Для криптографии подойдет. probabilistic algorithm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 07:02 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
SashaMercury60 скорее всего получено эмпирически Это произведение первых простых чисел: 2*3*5 = 60 следующее такое 420. Думаю на этом оптимизация как-то завязана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 07:22 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Мужики, мне кажется до определённого размера простые числа можно не хранить, достаточно перебора 999999937 / 50847534 =19.6 вот смотрите, при натуральном k 6k-1 6k - кратно 2 и 3 6k+1 6k+2 - кратно 2 6k+3 - кратно 3 6k+4 - кратно 2 т.е. все простые числа лежат в множестве 6k+/-1, достаточно проверять 1 из 3-х чисел операции с регистрами гораздо быстрее чем попытки лезть в памятьМожно пойти дальше: остатки от деления на 30 для простых чисел больше 5 могут быть только 1,7,11,13,17,19,23,29. Можно сократить битовую карту почти вдвое - один байт на 30 чисел. Выкидываем кратные 7 - получаем 48 бит (6 байт) на 210 чисел. И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 07:34 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercury60 скорее всего получено эмпирически Это произведение первых простых чисел: 2*3*5 = 60 следующее такое 420. Думаю на этом оптимизация как-то завязана.2*3*5 = 30 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 07:35 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Barlone2*3*5 = 30 вот я затупил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 07:44 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Понял магичность числа 60. Если взять все числа которые не делятся без остатка на 2,3,5, будет такая табличкаЧислоОт предыдущего7114132174192234296312376414432474492534596612676...... если табличку продолжить видно что повторы идут с частотой 60 Исследовал как бы в цикле шаги побольше делать. Для выкидывания четных шаг 2. Т.е. перебор 50% значений Для (2, 3) шаги 2,4,6. Перебор 25% (кол-во эл-тов/сумму) Для (2, 3, 5) шаги 4,2,4,2,4,6,2,6,4,2,4,2,4,6,2,6. Перебор 26,7% (16/60) (отсюда и получилось 2*3*5 = 60) Для (2, 3, 5, 7) Перебор 22,9% (96/420) Неоптимальное число 60, лучше 420 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 08:32 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TГлянул мельком, интересная метода, но получить все простые с ее помощью будет проблематично. Например посмотри где стоят 15 и 27. Для криптографии подойдет. probabilistic algorithm С помощью нее и невозможно получить все простые. Но можно найти ряд полиномов внезапно (!) генерирующих подмножество простых на интервале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 08:37 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Еще несколько магических чисел: 4620 для (2,3,5,7,11) Перебор 20,8% (960/4620) 60060 для (2,3,5,7,11,13) Перебор 19,2% (11520/60060) 1021020 для (2,3,5,7,11,13,17) это уже сложно в экселе обсчитать Магическая формула простая: перемножаем все простые 2...N и еще раз на 2. Выкидываем кратные 2...N и строим ряд из разницы соседних. Цикл начинаем со следующего простого после N В итоге перебор стремится к 5% (примерно столько простых в диапазоне), но как-то медленно стремится. Попробую для начала тройки выкинуть, уже двухкратное ускорение по сравнению с перебором нечетных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 09:04 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T, еще раз на 2 то зачем умножать? http://primes.utm.edu/glossary/page.php?sort=WheelFactorization ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 09:14 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Large wheels are not particularly efficient. To remove 90% of the composites, we must use the primes up to 251. 95% requires the primes to 75,037. 96% requires the primes to 1,246,379. 97% requires the primes to 134,253,593! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 09:15 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
BarloneDima T, еще раз на 2 то зачем умножать? я исхожу из того чтобы циклом идти как можно большими шагами, там периодичность именно такая выходит Например для (2,3) начинаем со следующего простого (5) и шагаем 2,4,6,2,4,6... т.е. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Суммарный шаг 12(2+4+6) или (2*3)*2 для (2,3,5) шаги 4,2,4,2,4,6,2,6,4,2,4,2,4,6,2,6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 09:37 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T, последовательность 4,2,4,2,4,6,2,6 повторяется дважды зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 09:41 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=38924227&tid=2017971]: |
0ms |
get settings: |
13ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 285ms |
| total: | 560ms |

| 0 / 0 |
