|
|
||||||
Сколько их, простых10.01.2011, 05:19. Показов 10524. Ответов 39
Вот переделал программу от 04.12 2008 года... «по совету друзей»!
Для нескольких млн работа идёт «молча» много секунд... может, кто знает, как отобразить расчётное время выполнения на типичной такой полосе, с движком или цветным заполнителем?
0
|
||||||
| 10.01.2011, 05:19 | |
|
Ответы с готовыми решениями:
39
Сколько простых чисел в диапазоне [a; b]. Нахождение простых, взаимно-простых и парно-простых чисел из указанного диапазона Посчитать, сколько простых чисел в интервале [1; N] |
|
|
|
| 30.01.2014, 21:08 [ТС] | |
|
У меня машина послабее (1 Гб ОЗУ, 2,28 ГГц) — взял для испытания 10 млн; с индикацией 40 секунд, без — 57 (но была включена интернет-видеотрансляция). Отлично!
Кроме того, использовал булев массив (вместо байтового); документ приложен; картинка так, для красоты.
0
|
|
| 30.01.2014, 22:58 | ||||||
Сообщение было отмечено как решение
Решение
По теме топика "Сколько их, простых / VBA" (а не по прогрессбару)
Если немного оптимизировать алгоритм, то можно существенно ускорить программу. Без вывода чисел на лист (все лишнее закомментировал), до 535000100 мой ноутбук считает за 17,3 секунды (до 1 миллиарда - 32,6 секунды) VBA Excel
2
|
||||||
|
|
|
| 31.01.2014, 01:54 [ТС] | |
|
И вот она у меня! Таблица простых чисел! Неожиданный бонус. Спасибо за это m-ch.
0
|
|
| 01.02.2014, 18:34 | |||||||
|
Скачать архив со всеми этими числами можно по ссылке http://yadi.sk/d/TF1fD5IPH7juL Возможно код не самый оптимальный по скорости, т.к. пришлось ждать несколько часов.
1
|
|||||||
|
|
|
| 05.02.2014, 15:47 | |
Сообщение было отмечено как решение
Решение
А теперь собственно по ПРОГРЕССБАРУ.
Прогрессбар теперь замедляет работу не более, чем на 0,8% . Для числа 535 000 100 время работы в Excel : 16.414 сек. Имя ОС Microsoft Windows 7 Профессиональная Версия 6.1.7601 Service Pack 1 Сборка 7601 Офис: Office 2007 Процессор Intel(R) Core(TM) i7 CPU 930 @ 2.80GHz, 2801 МГц, ядер: 4, логических процессоров: 8 Установленная оперативная память (RAM) 4,00 ГБ Для ускорения работы прогрессбара и ограничения количества точек обновления, пришлось сильно изменить основной быстрый алгоритм от M-ch , тот который без побитовых операций. Массив Flag пришлось объявить как Boolean, так как несколько раз под Windows XP вылетало сообщение "Out of Memory". В файле Word это сообщение выскакивает и для числа 535 000 100 и под Windows 7, так что по умолчанию стоит 400 000 000. На более медленных компьютерах и системах количество точек обновления прогрессбара автоматически увеличится.
1
|
|
| 09.02.2014, 21:50 | ||
Сообщение было отмечено как решение
Решение![]() Т.к. "побитный" алгоритм очень медленный и имеет ограничения по количеству чисел, реализовал алгоритм поблочного просеивания решетом Эратосфена. Основные принципы: 1. определяем простые числа до корня из n 2. разбиваем на блоки числа до n и каждый блок просеиваем простыми. Данный алгоритм позволяет существенно увеличить число n, до которого производится расчет. Затрачиваемое время уменьшилось: до 535 000 100 - 10 сек. до 8 млрд. - менее 3х минут (в отличии от 4х часов в предыдущем алгоритме) до 100 млрд. - 42 минуты Думаю, что можно и до 1 трл. посчитать, займет это 8-12 часов (пока лень столько ждать) Заполнение блоков получилось относительно равномерным по времени, поэтому нет необходимости извращаться с прогрессбаром. Прогрессбар в данной реализации практически не тормозит код.
1
|
||
| 10.02.2014, 22:31 | ||
|
Сошлись все значения, кроме п(10^10). У меня получилось 455 052 511. Учитывая, что статья написана в конце 70х - начале 80х, понравилась там фраза - "Так скромно выписанные в ней значения π(x) потребовали тысяч часов трудоёмких вычислений". Мне сегодня для вычисления п(10^10) потребовалось менее 4 минут. Так вот, разница на единицу наводит на мысли, либо у меня не правильный алгоритм (хотя странно, что совпали все другие числа), либо в статье допущена ошибка (опечатка), либо она попала туда при переводе. Если есть желающие, то пересчитайте значение п(10^10) каким либо другим вариантом, либо дайте ссылку на источник, где подтверждаются мои вычисления.
1
|
||
| 10.02.2014, 23:05 | |
|
Сам нашел источник http://www.ismlab.usf.edu/isec... _there.pdf
где подтверждается число 455 052 511 для 10^10
1
|
|
|
|
||||||
| 11.02.2014, 06:46 | ||||||
|
Вот..., функция по созданию простых чисел
самая быстро-работающая, придуманная мной и модератором под ником Апостроф
0
|
||||||
| 11.02.2014, 09:02 | |||||||
|
Набросал за 5 минут функцию, которая базируется на ранее опубликованном алгоритме, работает более чем в 2 раза быстрее для больших n
2
|
|||||||
|
9908 / 3928 / 742
Регистрация: 11.10.2011
Сообщений: 5,908
|
||||||
| 11.02.2014, 11:28 | ||||||
|
Ещё пять копеек (процентов) к производительности
![]()
3
|
||||||
|
|
|
| 24.02.2014, 10:07 | |
|
Файл EratospheneBlock.xls от M-ch с установленным по умолчанию числом 535 000 100 можно использовать как интегральный тест производительности конфигурации компьютера и системы для линейных задач VBA, без распараллеливания процессов (в Net Basic).
Пример для 5-ти машин и систем. Везде Office 2007. 1-ый : Netbook E-machine , Windows XP SP3, процессор Intel Atom N450 1,66ГГц , RAM 1 Гб - 104,125 сек - индекс производительности 1.0 ; 2-ой : ноутбук Toshiba Toshiba Satellite A300 , Windows Vista, процессор Intel Pentium Dual Core T4200 2,0ГГц , RAM 3 Гб - 26,152 сек - индекс производительности 3.98 ( раз быстрее Atom-а) ; 3-ий : стационарный, Windows XP SP3, процессор Intel Core 2 Quard Q6600 2,4ГГц , RAM 4 Гб - 20,672 сек - индекс 5.04 «Atom»-ов ; 4-ий : стационарный, Windows 7, процессор Intel Core i7 930 2,8ГГц , RAM 4 Гб - 15,008 сек - индекс 6.94 Атомов ; 5-ый : ноутбук Asus X550LC-X0074 , Windows 8, процессор Intel Core i7 4500U 1,8 Ггц, RAM 4 Гб - 12,328 сек - индекс 8.45 Атомов.
2
|
|
|
|
|
| 24.02.2014, 10:24 | |
Сообщение было отмечено как решение
Решение
Спасибо, что нашли разные компьютеры, чтобы посчитать скорость
![]() Добавлено через 4 минуты я завидую тому, что у вас столько свободного времени есть
1
|
|
|
|
|
| 31.08.2014, 13:25 | |
|
Прикольно, мне особенно кнопка понравилась, и прогресс-бар
Добавлено через 1 минуту Реализацию, я пока еще не понял ..разбираюсьДобавлено через 4 минуты ..100 секунд на моей машине потребовалось, ..вот
0
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 01.09.2014, 06:00 | |
|
1
|
|
| 28.02.2016, 14:21 | |||||||
|
Решил перенести код по подсчету количества простых чисел на FreeBasic, время работы (без изменения кода программы) на моей машине при подсчете до n=535000100 - 4 секунды (VBA - 10 секунд) Кликните здесь для просмотра всего текста
Всего в 2,5 раза быстрее чем VBA, это хуже, чем VB6 win 8.1, i7-3630QM 2.4GHz, RAM 8ГБ FreeBasic позволяет легко реализовать потоки, алгоритм функции также можно разбить на параллельные вычисления. Итого время подсчета для n=535000100 - примерно 1 секунда (что в 10 раз быстрее VBA) Время расчета до 10^9 - 2 секунды до 10^10 - 21 секунда до 10^12 - 42 минуты Функцию реализовал в виде внешней DLL на FreeBasic, которая подключается и используется в VBA (Excel) Исходник и скомпелированная DLL во вложении PS: Конечная цель перевода в DLL - увеличение скорости математических вычислений за счет более быстрого языка (по сравнения с VBA) и параллельных потоков.
1
|
|||||||
|
1 / 1 / 0
Регистрация: 17.09.2017
Сообщений: 1
|
|
| 17.09.2017, 20:28 | |
|
Добрый вечер. Ребят, спасибо за решение на Экселе.. а где бы найти решение этого решета - но полное.. т.е. - мне нужно, к примеру, до 1000.. Эксель строит таблицу от 1 до 1000, затем ищет простые цифры и или зачёркивает по порядку с нарастанием (одна полоса, две , три) - или разными цветами.. и в табличке ПОКАЗАНЫ ВСЕ цифры, а не только простые.. вот как например сделано в Гифке на Вики.. заранее спасибо..
1
|
|
| 17.09.2017, 20:28 | |
|
Помогаю со студенческими работами здесь
40
Выяснить сколько простых чисел находится в интервале
Определить, сколько простых чисел было введено Сколько простых чисел взаимно простые с 42 между 30 и 70
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|