Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Опять же проверить тот сайт ты не можешь. Где гарантия что не врут? Как проверить? Простое число 4200000037 как бы его точно в квадрат возвести и туда запостить. Везде округленные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 20:12 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Проверил умножением. Не врут. Произведение - точное. Правда проверить на простоту число 271963805968702864258461551790513043662751795453 - это трабл. Поискал другие сайты - тухляк. На многих факторизатор - игрушечный. Ограничен диапазоном int32. А один особо отличился. Подвесил мне браузер нахер. Причем так жёстко что пришлось ребутнуть процесс в taskmanager. Кажется этот http://ru.onlinemschool.com/math/assistance/number_theory/multiplier/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 23:07 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Алгоритм Аткина, согласно Аткину, реализован Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. Пришлось воспользоваться конструкцией предложенной другим автором, но ничего страшного, та конструкция лучше того, что я предлагал вчера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 03:45 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TОпять же проверить тот сайт ты не можешь. Где гарантия что не врут? Как проверить? Простое число 4200000037 как бы его точно в квадрат возвести и туда запостить. Везде округленные значения. 17640000310800001369 я ведь писал программу для работы с длинной арифметикой :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 03:57 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Тот ресурс корректно справился с этим числом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 04:06 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
SashaMercuryАлгоритм Аткина, согласно Аткину, реализован Пришлось воспользоваться конструкцией предложенной другим автором, но ничего страшного, та конструкция лучше того, что я предлагал вчера В википедии подобная конструкция, но есть разница в мелочах. Хорошо написал, твой код понятнее. Теперь есть точка отсчета для оптимизации. По твоему коду, что можно оптимизировать: 1. element_belong() раскладывается на 3 массива по 60 элементов, проставить true там где надо, затем проверять divisors1[n%60]. Можно 64 бита взять. 2. Вывод результата начиная с 3 и шагом 2. 3. Четные можно выкинуть из биткарты. Просто добавить проверку n на четность перед использованием n. if(n&1) ... Памяти потребуется вдвое меньше. Еще бы n%60 как-то ускорить, т.е. от % избавиться. Мысль появились: для оценки производительности надо посчитать общее количество итераций. Если у Аткина их заметно меньше Эратосфена, то есть смысл дальше бороться за скорость. Замерю - отпишусь. SashaMercury17640000310800001369 я ведь писал программу для работы с длинной арифметикой :) Вчера не сообразил. Вот она первая проблема чисел х64: как результаты смотреть? Надо про printf() почитать, может есть такой тип, или придется накидать что-нибудь простенькое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 06:58 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
printf должен работать для unit64, int64. http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long-long-intthe-format-specifier-for-unsigned-lo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 07:57 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonНемного отвлеку вас. Нашёл страничку. Онлайн факторизатор. http://ru.numberempire.com/numberfactorizer.php Вот такое вот число Код: plaintext 1. было разложено на множители менее чем за сек. Код: plaintext 1. Вам интересно, как? Мне - да. Мне интересно.Однозначно не перебором простых делителей. Если 6755603 еще гипотетически можно найти перебором, то например 340282366920938463463374607431768211457 (это 2^128+1 - седьмое число Ферма) разлагается на множители 59649589127497217*5704689200685129054721. Тут перебор делителей не поможет. https://ru.wikipedia.org/wiki/Факторизация_с_помощью_эллиптических_кривых https://ru.wikipedia.org/wiki/Метод_квадратичного_решета https://ru.wikipedia.org/wiki/Общий_метод_решета_числового_поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 08:31 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Затестил итерации Аткина и ЭротосфенаАткина взял своего (причесанного из вики), по циклам он с Сашиным совпадает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. Результатtest 100000000 eratosfen 146286641 times atkin 159115849 times Аткин на 8,7% больше проходов. Это еще без учета того что в первом цикле за раз три значения обрабатываются. Если там по 3 считать, то будет 359115849. Вобщем надо Аткина как-то в эту сторону оптимизировать. По максимуму бороться с четными в переменных цикла. Что смог - уже учел в коде теста. Проверьте, может криво намерил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 08:31 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
А можно 4 млрд. сравнить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 08:39 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
SashaMercuryА можно 4 млрд. сравнить? Тест доЭратосфенАткин10000012161915898610000001311234159126610000000139255881591017810000000014628664115911584980000000012152607781272900787 Аткин до 800 млн. считает корректно. Дальше разрядности x32 не хватает. Проблема отсюда же. 4*x2+y2, т.е. предел 4 млрд./5 Надо как-то выскакивать из цикла досрочно Пробовал так. Вроде логично, но результаты становятся неправильные, затести на своем варианте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 09:28 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima T Надо как-то выскакивать из цикла досрочно Пробовал так. Вроде логично, но результаты становятся неправильные, затести на своем варианте Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. логично что они становятся неправильные, y растёт, потому n убывает, потому корни ещё могут быть, прерывать нельзя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 09:46 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
SashaMercuryлогично что они становятся неправильные, y растёт, потому n убывает, потому корни ещё могут быть, прерывать нельзя Понял. Тогда надо как-то перешагнуть область где (n > limit). Надо формулу изобретать. Как вариант: прервать цикл и пойти с обратного конца. Так правильно будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:06 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryлогично что они становятся неправильные, y растёт, потому n убывает, потому корни ещё могут быть, прерывать нельзя Понял. Тогда надо как-то перешагнуть область где (n > limit). Надо формулу изобретать. Как вариант: прервать цикл и пойти с обратного конца. Так правильно будет? Да, скорее всего так и нужно, значение y должно плясать от значение x с конца.. PS Что-то не так. Аткин доказал что его алгоритм эффективнее, пусть это и не заметно на маленьких объёмах. У нас получается обратное, сейчас мы занимаемся оптимизацией. Значит либо Алгоритм реализован неправильно, либо в чём-то другом дело. Аткин говорит о 19 секундах для миллиарда, на более простом алгоритме, на старой машине. Что-то видимо я не так сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:13 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Вот что соавтор Аткина пишет , и выкладывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:20 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Возможно запустить его код и проверить на своей машине, или это будет проблематично ? Интересно, будет ли тот код быстрее твоей реализации Эратосфена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:25 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВозможно запустить его код и проверить на своей машине, или это будет проблематично ? Интересно, будет ли тот код быстрее твоей реализации Эратосфена Видел ту ссылку, только там какая-то гора исходников, внутрь не заглядывал. Можно попробовать. Пока некогда, вечером попробую запустить. Можешь сам затестить. Мой Эратосфен выше. Выкини в обоих случаях сохранение. У меня prime.push_back(). Замени на подсчет количества найденных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 10:32 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonНу не взлетело так не взлетело. Я думал мета-компилляция спасёт моё решето... Вобщем я подумал и вот что решил. Никакое это не решето мейтона. Это фильтр мейтона. (Mayton's numbers filter (MNF)). Ну... вобщем нет смысла хардкодить циклическую арифметику на полную длину primes до SQRT. Но можно эффективно отбрасывать PRIMES которые имеют делители до первой сотни. И вот почему. В современных железках есть команды SIMD. Это когда за 1 шаг мы выполняем вектор инициаций. Вектор сложений. И вектор еще чего-нибудь. Напр 128-битный SSE регист может быть побит на 4х64 или 8х32 регистра и операции сложения будут работать как микро-threads в контексте 1 итерации проверки числа на простоту. Вот такой вот экстенсивный путь еще есть. Мдя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:08 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryВозможно запустить его код и проверить на своей машине, или это будет проблематично ? Интересно, будет ли тот код быстрее твоей реализации Эратосфена Видел ту ссылку, только там какая-то гора исходников, внутрь не заглядывал. Можно попробовать. Пока некогда, вечером попробую запустить. Можешь сам затестить. Мой Эратосфен выше. Выкини в обоих случаях сохранение. У меня prime.push_back(). Замени на подсчет количества найденных. Саша. Дима. Давайте зальём в репозитарий. Будет удобнее работать совместно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:11 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonСаша. Дима. Давайте зальём в репозитарий. Будет удобнее работать совместно. Я не против, только не умею :) Как понимаю ты тут уже все заготовил 17455393 Как туда зацепиться? Есть какая-нибудь инструкция? желательно на русском. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:25 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:36 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
mayton, Круто, у нас будет собственный fun-проект... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:39 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
maytonСкачай и установи себе TortoiseSVN. http://tortoisesvn.net/ Дальше - расскажу. Дальше не надо. Уже стоит. Думал там что-то другое надо. Зарегался, качнул. Вечером освобожусь, подготовлю свои поделки к аплоаду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 12:52 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
Dima TДальше не надо. Уже стоит. Думал там что-то другое надо. Зарегался, качнул. Вечером освобожусь, подготовлю свои поделки к аплоаду. Ты должен дать мне реквест на добавление тебя в группу разработки. Иначе доступ - R/O. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 13:09 |
|
||
|
Генератор простых чисел (до 10^9 за 5 сек)
|
|||
|---|---|---|---|
|
#18+
У меня кстати первая в жизни самостоятельная программа была (учебное задание на первом курсе) -- именно генерация простых чисел и именно решетом Эратосфена. На Fortran-IV. На ЕС ЭВМ. До сих пор где-то тетрадка с распечаткой валяется. Это был первый урок постижения, что такое "производительность" и как за неё бороться. Меня отец учил. Сначала написал, отладил на числах до 100, запустил на до миллиона -- задача снята без ответа (на ЕС пакетный режим, и ограничение по процессорному времени были). И дальше -- поехало, такая оптимизация, такая (деталей не помню) -- всё на математике. В конце влезла она в тайм-слот, и напечатала все числа, задание сдал. Попробую отрыть тетрадь для прикола... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2015, 13:09 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38923665&tid=2017971]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 265ms |

| 0 / 0 |
