#0
by viktorovichvadim
Коллеги, привет. Может кто разрабатывал генераторы простых чисел? Какие есть быстрые алгоритмы, сопоставимые/более быстрые чем решето Аткина? Несколько дней назад разработал новый алгоритм генерации простых чисел, достаточно элементарный, и пока только на 1С. Но работает в 4.5 раза быстрее чем решето Аткина в реализации IamAlexy Генерирует до 15 млн. простые за 40 сек, в то время как решето Аткина в реализации IamAlexy - за 187 секунд. Мой алгорим -тоже решето, но имеет мало общего с Эратосфена, Аткина и пр. В сети описание чего-то похожего пока не обнаружил. Хочу перекодить на Java, посмотреть на больших числах, т.к. в 1С дальше 15 млн. уже нехватка памяти.
#1
by IamAlexy
:) ты с 2009 г. не спал и не ел, все работал чтобы победить мою обработку? похвально похвально.. надеюсь ты ее скачал и запустил на своем компе а не смотрел на циферки со скриншотов?
#2
by viktorovichvadim
спал и ел, работал. задачка интересная, вот и вспомнил. обработку запускал на своем компе и твою и свою. понятно, что твой код взят с википедии, он упрощен для демонстрации идеи решета Аткина. надо брать реальную реализацию и сравнивать с ней.
#4
by viktorovichvadim
"It generates the 50847534 primes up to 1000000000 in just 8 seconds on a Pentium II-350". (Это про решето Аткина) Вот похоже, какой-то ориентир в первом приближении. Если дойду до миллиарда за сопоставимое время, можно будет прорабатывать тему более конкретно.
#6
by Злопчинский
если простые числа расположить в полярной ситеме координат - почему то прослеживается группирование.. ане равномерная размазня.. - так пишут британские учоные
#7
by sda553
Ты просто скажи какая сложность алгоритма. У Аткина N/loglogN А то может у тебя линейная, просто на первых миллионах дает хороший результат, а асимптотически фигня будет
#9
by Asmody
[разработал новый алгоритм генерации простых чисел] - ООО! Патентуй скорей! Это как минимум Нобелевка! Жаль только, что Нобелевку по математике не дают
#11
by NikVars
Некогда не догадывался 1С использовать для такой ерунды. Не глумитесь! 1С исключительно для зарабатывания денег!
#13
by sda553
Это все равно, что у Колумба, отплывающего спросить "Зачем тебе это нужно?" Открыть новые алгоритмы. Назвать их своим именем. Прославиться.
#14
by Зойч
новый алгоритм генерации простых чисел???? Тут конуренция поболее будет, чем если индусов пустить 1сить
#15
by Neg
Ну если так, то тогда я очень рад, тому, что нахожусь на одном форуме с таким человеком, даже не общаясь с ним.
#17
by sda553
Наоборот, в генерации простых чисел, кажется, уже все возможные алгоритмы открыты и ничего нового не появляется. Он еще не доказал, что его алгоритм чем то новый и чем то производительный.
#21
by viktorovichvadim
времени не сильно много. переписал свой алгоритм на java, рядом для сравнения - упрощенную реализацию решета Аткина с Википедии (по сути кода-примерно то же, что и у IamAlexy на 1С: ). Все равно удалось сравнить на простых до 22 000 000. Дальше - ограничение по типу int. Алгоритм обращается на индексы массива, а значение индекса не может быть типом long (а только этот тип представляет достаточно большие числа). Надо модифицировать реализацию алгоритма. Если говорить о результате сравнения для простых до 22 млн.: - решето Аткина 936 мск, мой алгоритм 728 мск. Выводы делать преждевременно на таких числах. Так что буду копать дальше.
#22
by NS
Ты странно пытаешься делать. Нужно не скорость измерять, а понять сложность алгоритма, и требуемую память.
#23
by sda553
Ты не туда копаешь. Сравнивать надо не конкретные времена на конкретных количествах простых, а сложность алгоритма. Если у тебя линейная сложность О(N), то Аткин может и будет вначале отставать, но через сколько то миллиардов, рано или поздно догонит и перегонит
#25
by sda553
Если не можешь сам посчитать сложность, то просто хотя бы составь график времени по точкам от 1 до 22 млн. Что получается? Прямая линия, кривизна, выпукло, вогнуто. И то же самое составь такой же график для Аткина и посмотри, что приблизительно получается на бесконечности - если кривые продолжить
#26
by sda553
Если прямая линия, то считается сложность линейная O(N) У Аткина сложность O(N)/loglog(N) т.е. если глянешь график, то, чем больше N тем Аткин эффективнее
#27
by viktorovichvadim
на отрезке, который я проверял, и аткин и мой показывают линейную зависимость.
#28
by sda553
Упрощенный Аткин линейный. N/loglogN получается после усложнения, который скорее всего Asmody не делал. Если у тебя алгоритм линейный, то это как бы не очень, достижение. Линейных алгоритмов поиска простых - куча.
#30
by viktorovichvadim
так что, если один алгоритм работает в 10 раз быстрее другого при одинаковой сложности, то это и не считается достижением?
#31
by sda553
Нет, т.к. их можно выровнять проведя хорошую оптимизацию кода или собрав специальную аппаратуру, которая может быстро проводить требуемое повторяющееся в цикле вычисление. А сложность алгоритма подобными мерами не изменишь. Аткин не линейный.
#32
by NS
Если твой алгоритм линейный, то как бы ты его не ускорил - никакой практической ценности он не представляет.
#33
by NS
В редких случаях, когда константа намного лучше в алгоритме с худшей сложностью, он всё-таки применяется на практике. Но для этого константа должна быть реально лучше.
#34
by viktorovichvadim
похоже, нужно применить какую-нибудь адекватную методику оценки сложности алгоритма, потом делать выводы. спасибо за внимание к вопросу.
#37
by NS
Вообще вот так просто взять и оценить сложность хитрого алгоритма не выйдет. Этому учат. Долго и упорно. Могу посоветовать книгу Кормена "Алгоритмы, построение и анализ"
#39
by МишельЛагранж
Ну вот, не произошло революции, снова и снова... Только я не понял - на что рассчитывал ТС, обогнать алгоритм Аткина, не предложив никакой нелинейной альтернативы?
#41
by kiruha
Ты должен победить O(N)/loglog(N) множители-константы не считаются Например добейся O(N)/log(N)
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- УПП Учет талонов ГСМ не имеющих стоимостной оценки у покупателя 4-мя документами
- СвязьПоТипу или как?
- Не получается с РеквизитФормыВЗначение()
- JOB: Есть люди которые получили доход выше 300 тыс. в месяц, работая программистом 1С?
- СКД Расшифровка работает один раз.
- Динамический список. Вылетает запрос с ошибкой
- Колонки в отчете по декадам.
- Выгрузка номенклатуры с характеристиками
- Проблема при подключении электронных весами Штрих-Принт М 15-2.5. Розница 2.0
- настройка почты в документообороте
- v7: конвертация реквизита из шапки в табличную часть
- Бухгалтерия сельскохозяйственного предприятия, СЛК
- Динамический список, Восстановление текущей строки
- Не получается выгрузить из ТЗ в дерево
- УТ11: "не удалось провести" - ранее проведённый документ
- Изменяемое количество колонок (СКД)
- ЗУП СЗВ - отпуск без оплаты пишется как АДМИНИСТР, а должно быть НЕОПЛ
- Клиент-банк. Выгрузка для ВТБ-24
- КД2 Поля поиска
- Автоматически рассчитать табличную часть