|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.12.2016, 16:36 | #11 | |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
Цитата:
У меня старенький ноутбук и вот результаты (правда я своим способом это делала, причем вывод шел непрерывно, а я в это время спокойно пользовалась интернетом и играла в "Косынку"): Последний раз редактировалось kropotkina-alice; 08.12.2016 в 16:38. |
|
08.12.2016, 16:36 | #12 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Аватар Ниффигасе скорость... 0.12 сек. до 1 000 000 000...
Но это же хитрым путём сделанная продвинутая программка Жаль, числа не выводит. Если я реализую решето в изначальном виде, модифицированном только началом с квадрата, мне всё равно до такого будет как черепахе до ракеты ) Но уже стало ещё интереснее всё-таки хоть как-то реализовать этот метод. Путём, доступным моему текущему пониманию. |
08.12.2016, 16:39 | #13 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
kropotkina-alice Ключевая фраза:
Каким способом делал я - вы видите. Не думаю, чтобы этим же (моим) способом Вы достигли бы своих скоростей. Если не жалко, поделитесь своим. Последний раз редактировалось Ship_1; 08.12.2016 в 16:43. |
08.12.2016, 16:50 | #14 |
Форумчанин
Регистрация: 27.10.2014
Сообщений: 594
|
Конечно не жалко...
Ни потоков, ни каких-либо малодоступных для понимания хитрых приемов - все решается "в лоб": Код:
Последний раз редактировалось kropotkina-alice; 08.12.2016 в 17:06. |
08.12.2016, 16:58 | #15 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
kropotkina-alice Спасибо! Поанализирую по дороге домой что тут происходит и почему я до такого не додумался
Хотя после 50 000 у меня окно зависло пока не доделало всё до конца. UPD: Подумал. Получается, что вы каждое число просто делите на каждое число, меньшее его половины? Не удивительно, что я не догадался до этого способа. Вроде, у меня практически то же, но я делю только на простые числа. Не думал, что обращение к списку настолько тормозит процесс, что простой перебор всех чисел подряд будет намного быстрее... Кстати, добавляя к TStringList найденные числа, а не выводя их сразу в Memo у меня результат поиска до 17 000 000 составил 67 секунд. Спасибо Вам! Вот дела-то... Последний раз редактировалось Ship_1; 08.12.2016 в 18:00. |
08.12.2016, 19:25 | #16 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а попробуйте ещё такой алгоритм:
Код:
p.s. ну а решето должно быть ещё намного быстрее |
09.12.2016, 14:00 | #17 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Serge_Bliznykov Спасибо, тоже попробую.
По методу kropotkina-alice за пару часов проходит около 500 млн. Но я таки реализовал решето Эратосфена! Разбил процесс на этапы: 1. формирование булевской матрицы 2. само вычисление До 17 млн второй этап занял пол секунды! Т.к. вывод простых чисел до 17 млн уже подтормаживал - решил и его выделить в отдельный этап: 3. вывод результата. Ввёл в Edit миллиард. Формирование матрицы заняло пол секунды. Поиск простых чисел занял 12.3 секунды!! А вот на выводе в Memo выкинулась проблема с памятью... Тогда решил выводить прямо в текстовый файл (AssignFile -> Rewrite -> Writeln -> CloseFile). На всякий случай подцепил ProgressBar (меняя его раз в 10 тыс.циклов). Вывод в файл занял практически 34 секунды Теперь вот не знаю чем этот файл открыть. ) Блокнот зависает. Ворд вообще сказал, что не работает с файлами, большими 512 МБ. А мой файлик получился 527 МБ. Вопрос на засыпку: а как, всё-таки, вывести их теперь в программке для просмотра? |
09.12.2016, 14:27 | #18 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А чего в нем интересного, чтобы пялиться на него? А вообще можно не целиком его в память, а кусками читать. Все равно сразу все не увидеть. А если смотреть на них, то интересно смотреть как-то графически, что бы визуально подмечать закономерности распределения. Например разворачивая их по спирали или еще как. Глядишь и закономерность распределения найдешь. Это покруче теоремы Ферма будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.12.2016, 15:33 | #19 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
хотите поднять скорость НЕ меняя алгоритма программы? конечно это не будет так кардинально, как при смене алгоритма, но все же...
избавляемся от постоянных StrToint. 1. Цитата:
Код:
Код:
P.S. заодно исключили одно использование Form1 в потоке. 2. Цитата:
правда оно имеет не совсем тот тип данных, но да это не беда. Код:
Код:
и в этом случае без цикла чтения уже никак не обойдешься. LoadFromFile не будет этого делать(заполнять свойство Objects[]). хотя можно сначала сделать LoadFromFile а потом пройтись в цикле и cделать Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 09.12.2016 в 15:51. |
||
27.12.2016, 16:26 | #20 |
Форумчанин
Регистрация: 10.02.2014
Сообщений: 526
|
Вот только не пойму как теперь шагнуть за пределы integer.
С int64 не хочет работать for и скорость создания первичной матрицы уменьшилась в 4 раза при переходе на while. Последний раз редактировалось Ship_1; 27.12.2016 в 17:23. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как можно обезопаситься от этого | faarigia | Безопасность, Шифрование | 2 | 11.02.2015 20:08 |
FileMapping. Работа с большим количеством страниц | munthrekosh | Общие вопросы Delphi | 1 | 25.05.2012 22:26 |
Работа с большим массивом данных | Freimaks | Общие вопросы Delphi | 21 | 20.04.2012 18:37 |
Работа с большим количеством текста в String иTextbox | Дмитрий999 | Visual C++ | 0 | 20.02.2012 20:07 |
работа с большим объемом данных | Ckif | Microsoft Office Excel | 1 | 14.09.2010 17:05 |