Решето Эратосфена — алгоритм нахождения всех простых чисел до некоторого целого числа n, который приписывают древнегреческому математику Эратосфену Киренскому.
Нашел тест http://easy-coding.blogspot.com/2010/03/go-c-c.html и думаю дай проверю каково это будет в 1С.
n = ЭлементыФормы.ПредельноеЧисло.Значение; A = Новый Массив(n+1); Для Индекс = 0 По A.ВГраница() Цикл A[Индекс] = Истина; КонецЦикла; Сообщить(Строка(ТекущаяДата())); Для i = 2 По n Цикл Если Pow(i,2)>n Тогда Прервать; КонецЕсли; Если A[i] Тогда j = Pow(i,2); Пока j<=n Цикл Если A[j] Тогда A[j]=Ложь; КонецЕсли; j = j + i; КонецЦикла; КонецЕсли; КонецЦикла; Сообщить(Строка(ТекущаяДата())); Счетчик = 0; Стр = ""; Для i = 2 По n Цикл Если A[i] Тогда Счетчик = Счетчик + 1; КонецЕсли; КонецЦикла; Сообщить(Строка(Счетчик));
Решето Эратосфена — алгоритм нахождения всех простых чисел до некоторого целого числа n, который приписывают древнегреческому математику Эратосфену Киренскому.
Нашел тестhttp://easy-coding.blogspot.com/2010/03/go-c-c.html и думаю дай проверю каково это будет в 1С.
Перейти к публикации
Прикладной смысл есть?
(1)Например, сравнение производительности обработки данных в памяти для разных билдов платформы.
Сравнивать версии платформ на скорость вполне интересно таким образом. С каждым новым релизом запускать обработку и надеяться на чудо 🙂
Всегда плюсую за подобные полеты фантазии и повышения личной образованности! 🙂
Решето Аткина быстрее.
Вот пример упрощенного варианта.
Работает в 3-4 раза быстрее.
Думаю если пошаманить можно ускорить еще в 3-4 раза.
Показать
(5) Nykyanen,
Аткину зачет! Алгоритм очень быстрый и памяти меньше требуется.
Я попробовал Эратосфена через Соответствия так оперативки не хватило.
(6) у меня на 8.3.1 и 8.2.16 и 8.2.15.319 в управляемых формах ваш алгоритм на 100 000 000 выдавал ошибку переполнения при создании массива, и платформа уходит в краш.
При подходе, который предложил я, требуется в 3 раза меньше размер массива
Видимо памяти мало, у меня 6 Гиов 64 win 2008 крэша не было.
Вот табличка:
А вот соответствию памяти нужно еще больше, 1С закрывалась с сообщением «Недостаточно памяти».
Но бесспорно, что алгоритм Аткина по всем параметрам лучше!
Баян?
http://infostart.ru/public/22292/
Невозможно не согласиться 🙂
Но я поиском не нашел, видимо потому, что только по 8.2 искал.
(8) у меня 8 гиг, win 7 корп.
База серверная на MS SQL.
Думаю проблема в управляемых формах.
очень интересно. особенно в плане быстродействия клиен-сервер
в алгоритме Эратосфена Pow(i,2) вычисляется дважды.
Сообщить(«»+ Строка(дата2-дата1) + » сек. / » + Счетчик + » чисел»)