Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TВывод в консоль это жесть. Завешивает RDP-терминал наглухо. Ладно хоть до миллиона указал, не долго считалось :) Если ты - счастливый обладатель Пингвина - то запускай Код: plaintext 1. Для винды. Код: plaintext 1. или в файл. А так будет ацкий тормоз. Но вобщем-то смысл моей работы был в том что числа нужно где-то хранить. Просто count(*) мне неинтересен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 21:21 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
В debug запустил потому что MS VC его по дефолту ставит. Сейчас вообще в дебаг не компилируется. Мелочи. Сегодняшние изучения. Микрооптимизация ускоряющая твой код на 20-25% Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Это пропуск кратных тройке. Там счетчик итого показывает на 1 больше, но вроде это со счетчиком проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 21:50 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
mayton, Dima T Добавьте простенький CMakeLists хотя бы как во вложении (он для pbfa) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:12 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonНо вобщем-то смысл моей работы был в том что числа нужно где-то хранить. Просто count(*) мне неинтересен. Допили под свои потребности Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. пока x32 позже будет next_prime64() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:13 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Рационально. Потестил. На 100_000 сошлось. Значит всё будет ок. Выражение step переделал. Скорость еще не мерял но с шагом больше двух полюбому быстрее будет. Код: plaintext 1. 2. Fixed. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:19 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
mayton, похоже ты не понимашь главного: next_prime(X) это простейший супер-интерфейс получения простых чисел. Хочешь с нуля считай, хочешь - любое следующее, как следствие - диапазон от .. до, хочешь на простоту проверяй Х == next_prime(X - 1). Разве что предыдущее сложно получить. а дальше сам решай сохранять их или просто считать сколько получилось. PS mayton, готовь диски, x64 простых ~4*10^17, или 400`000 терачисел :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:31 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T, какие ограничения на память будут действовать для твоего решета x64 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:41 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonСкорость еще не мерял но с шагом больше двух полюбому быстрее будет. Это тест был незаконченный, хочу унивесальный пропуск сделать (2,3,5,7 ...) Затестить какой оптимальнее. По замерам времени: возьми мой header.h, там есть now_msec() для замеров в мс, а то в секундах несерьезно. Можешь стандартный clock() использовать, только в линуксе он считает сколько програма реально проработала, всякие sleep() не учитывает, но в данном случае это не критично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:41 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonDima T, какие ограничения на память будут действовать для твоего решета x64 ? Можно медленно с 64Кб, можно быстро с максимум 750 Мб(все простые x32 в uint32). Оба варианта дадут одинаково быстро посчитают однократно next_prime64(X), разница в скорости будет на расчете диапазона (при малом кэше придется пересчитывать). Для быстрого расчета next_prime64(X) надо в кэше иметь все простые до sqrt(X), в первый заход они расчитываются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 22:50 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Ну... перефразирую вопрос. Вот задача. Проверить на простоту это число. Код: plaintext 1. Факторизовать. Как более общая постанока. Разложить на простые. Я писал об этом в начале топика. Меня увлекает это. Я - have fun от подобных головоломок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2015, 23:04 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonПросто мы решаем разные задачи. Я искал оптимальные способы хранения расчитанных primes на диске чтобы факоризировать сверх-длинные целые. maytonНу... перефразирую вопрос. Вот задача. Проверить на простоту это число. Код: plaintext 1. Факторизовать. Как более общая постанока. Разложить на простые. Я писал об этом в начале топика. Меня увлекает это. Я - have fun от подобных головоломок.Чтобы "факоризировать сверх-длинные целые", не надо хранить простые числа. Бесполезно это. А число ваше простое, по крайней пере по вероятностным тестам. Нужно доказанное простое - смотрите на что-нибудь типа https://ru.wikipedia.org/wiki/Тест_Миллера_(теория_чисел) или https://ru.wikipedia.org/wiki/Критерий_Поклингтона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 05:27 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonУ меня был план - хранить расчитанные primes в бинарных файлах специально оптимизированных по размеру (каждое число укладывалось в несколько бит). Делись планом. Это одна из недорешанных проблем. Из моего алгоритма Эратосфен никуда не не исчез, поэтому кэш нужен. Причем нужен быстрый последовательный перебор от 2 до N. Где N макс.простое до 2^32 Самое быстрое это вектор uint32, для расчета любого x64 под него потребуется 750 Мб. Пока использована биткарта, ей хватает 256 Мб, но чтение из нее это побитовый перебор - очень не быстро, секунда на проход. Есть мысль хранить расстояние между соседними, если не окажется дырок больше 128К, то можно будет взять массив uint16 - это 375 Мб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 06:56 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
mayton271963805968702864258461551790513043662751795453 Критерий Поклингтона для вашего числа: N = 271963805968702864258461551790513043662751795453 N-1 = 90233392513315464829662320219386916428363 * 3014004 Берем a=2, проверяем что 2^(N-1) mod N = 1 и gcd(2^3014004-1, N) = 1 - это легко, возьмите gmp (или mpir под windows) и проверьте. Я проверил. Правда теперь надо еще доказать, что 90233392513315464829662320219386916428363 простое. Для него можно проделать все то же самое, теперь упремся в доказательство простоты 10378812113332811689632196942648598623. С этим хуже, для него N-1 = 2*3*11*73*761*83537*403253*1108092371*75833962769 - тут нет простого множителя больше квадратного корня, критерий Поклингтона не получиться использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 07:41 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonНу... перефразирую вопрос. Вот задача. Проверить на простоту это число. Код: plaintext 1. Факторизовать. Как более общая постанока. Разложить на простые. Я писал об этом в начале топика. Меня увлекает это. Я - have fun от подобных головоломок. Есть библиотеки специальные, GMP например. Результат совместного творчества решения подобных головоломок умными дядьками. ИМХУ мне их точно не перегнать. 271963805968702864258461551790513043662751795453 is probably prime Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. не понял что второй параметр mpz_probab_prime_p() задает https://gmplib.org/manual/Number-Theoretic-Functions.html Я так понимаю нет чудо теста который гарантированно скажет что это простое число, 100% гарантия это только перебор с делениями на все sqrt(x) и производные от него. Вобщем все упирается в sqrt(x), в данном случае до 10^24 или перебор ~10^22 простых. Со скоростью 1 млрд. в секунду уйдет всего 317 млрд. лет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 07:55 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
BarloneЧтобы "факоризировать сверх-длинные целые", не надо хранить простые числа. Бесполезно это. А число ваше простое, по крайней пере по вероятностным тестам. Нужно доказанное простое - смотрите на что-нибудь типа https://ru.wikipedia.org/wiki/Тест_Миллера_(теория_чисел) или https://ru.wikipedia.org/wiki/Критерий_Поклингтона Я вобщем-то ждал этого. Ну что-ж спасибо за совет. Думаю что в обучательных целях некоторое хранилище простых кому-то пригодиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 08:02 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonДумаю что в обучательных целях некоторое хранилище простых кому-то пригодиться. возможно пригодится 17467271 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 08:08 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TЯ так понимаю нет чудо теста который гарантированно скажет что это простое число, 100% гарантия это только перебор с делениями на все sqrt(x) и производные от него. Вобщем все упирается в sqrt(x), в данном случае до 10^24 или перебор ~10^22 простых. Со скоростью 1 млрд. в секунду уйдет всего 317 млрд. лет :) Дима! Ну что за пессимизм. А векторность. Мультипоточность. Гриды. Ну прямо сел на пенёк и упал духом! Go! Go! Секс. Rock-n-Roll и С++!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 08:12 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonДима! Ну что за пессимизм. А векторность. Мультипоточность. Гриды. Не, это число конечно обсчитаем всей планетой за пару месяцев, а второе где считать будем? Как ни крути - надо ускорять Эратосфена алгоритмическими способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 08:17 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TЯ так понимаю нет чудо теста который гарантированно скажет что это простое числоНу как же нет, надо провести тест Миллера для всех простых не превосходящих 2*log²(N) - примерно до 23858. А, ну еще гипотезу Римана доказать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 09:35 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TЕсть мысль хранить расстояние между соседними, если не окажется дырок больше 128К, то можно будет взять массив uint16 - это 375 МбВроде бы отсутствие контрпримеров к гипотезе Лежандра гарантирует отсутствие дырок больше 128К для простых не превосходящих 2^32. Или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 10:12 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Зафиксировал next_prime64(). Теперь она x64. Код: plaintext 1. Barlone А, ну еще гипотезу Римана доказать :) Как понимаю из-за этой "мелочи" GMP пишет is probably prime :) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 10:19 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
BarloneDima TЕсть мысль хранить расстояние между соседними, если не окажется дырок больше 128К, то можно будет взять массив uint16 - это 375 МбВроде бы отсутствие контрпримеров к гипотезе Лежандра гарантирует отсутствие дырок больше 128К для простых не превосходящих 2^32. Или нет? Посчитать элементарно max delta 336 between 3842610773 and 3842611109 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Результатmax delta 6 between 23 and 29 max delta 8 between 89 and 97 max delta 14 between 113 and 127 max delta 18 between 523 and 541 max delta 20 between 887 and 907 max delta 22 between 1129 and 1151 max delta 34 between 1327 and 1361 max delta 36 between 9551 and 9587 max delta 44 between 15683 and 15727 max delta 52 between 19609 and 19661 max delta 72 between 31397 and 31469 max delta 86 between 155921 and 156007 max delta 96 between 360653 and 360749 max delta 112 between 370261 and 370373 max delta 114 between 492113 and 492227 max delta 118 between 1349533 and 1349651 max delta 132 between 1357201 and 1357333 max delta 148 between 2010733 and 2010881 max delta 154 between 4652353 and 4652507 max delta 180 between 17051707 and 17051887 max delta 210 between 20831323 and 20831533 max delta 220 between 47326693 and 47326913 max delta 222 between 122164747 and 122164969 max delta 234 between 189695659 and 189695893 max delta 248 between 191912783 and 191913031 max delta 250 between 387096133 and 387096383 max delta 282 between 436273009 and 436273291 max delta 288 between 1294268491 and 1294268779 max delta 292 between 1453168141 and 1453168433 max delta 320 between 2300942549 and 2300942869 max delta 336 between 3842610773 and 3842611109 end calc to 4294967295 count 203231690 time 23904 msec Замечательно. Хватит одного байта. Все разницы четные, поэтому на 2 поделим. Т.е. итого 203 Мб. 31 вариант всего, можно в 5 бит уместить. Т.е. 127 Мб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 10:41 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T31 вариант всего, можно в 5 бит уместить. Т.е. 127 Мб. Обсчитался, немного, не все скопировал с консоли. Еще есть разницы 2 и 4, т.е. вариантов 33, поэтому 6 бит надо. Или 152 Мб. Это если кто хранением захочет заняться. Мне больше однобайтовый вариант подходит, хранить delta/2, чтобы быстро писать и быстро читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 10:59 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T31 вариант всего, можно в 5 бит уместить. Т.е. 127 Мб.Не, про 31 вариант неправда. Точно есть разности 2 и 4. Ну и после нахождения большой дельты вы уже не показываете меньшие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2015, 11:02 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38925928&tid=2017971]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 29ms |
| total: | 289ms |

| 0 / 0 |
