2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 47  След.
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 13:54 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
whitefox в сообщении #1037410 писал(а):
И к тому времени как я созрею, нужную программу уже кто-нибудь напишет.

Ну, нас ещё и в BOINC никто не принял :-)

Вы ничего не ответили на вопрос об интерфейсе. Как насчёт того, чтобы выбросить из него всё лишнее уже сейчас? :-)
Я с такими "пышными" интерфейсами давно веду борьбу :lol:
Вот только недавно у нас был свежий пример с вашей программой проверки ассоциативных квадратов. Помните?
С программами svb было неоднократно. Меня даже и упрекали (на форуме ПЕН) за то, что я высказала недовольство этим самым интерфейсом. В том духе, что "пользуетесь чужими программами, да ещё и недовольны". Отчего же, я довольна.
Но с неудобствами интерфейса всё же борюсь.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 14:03 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Да-да, я помню как программы с предельно простым интерфейсом вызывали Ваше недовольство :-)

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 14:25 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
whitefox в сообщении #1037415 писал(а):
Да-да, я помню как программы с предельно простым интерфейсом вызывали Ваше недовольство :-)

Не поняла вашего юмора.
Свежий пример с "предельно простым" инерфейсом: когда при проверке 5000-10000 ассоциативных квадратов для каждого квадратика на экран выводилось слово "Неудача".
У меня голова кружилась от такого "предельно простого интерфейса". А у вас?

Теперь об интерфейсе в программе поиска КПППЧ, раз пошла такая пьянка.

Каждые две секунды на экран выводится время. Скорость выводится пореже. Время можно вообще не выводить (или один раз - в файл, при прерывании программы), а скорость только один раз - при запуске программы.
Ещё выводятся "проверено" и "просеяно" (и всё это с процентами) - тоже каждые две секунды.
А на фига, спрашивается, всё это выводится в программе, которая работает непрерывно у меня 15-17 часов (а у других работает сутками)? :shock:
Это сколько же раз всё это шлёпнется на экран?
Да и текущий интервал проверки можно выводить раз в 30-60 минут.

Да, при этом скорость и проценты у "просеяно" - "проверено" ещё ведь, наверное, и вычисляются каждый раз. Вот мороки-то! А зачем?

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 15:39 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Nataly-Mak в сообщении #1037430 писал(а):
Свежий пример с "предельно простым" инерфейсом: когда при проверке 5000-10000 ассоциативных квадратов для каждого квадратика на экран выводилось слово "Неудача".

А Вы не лукавите? :-)
Точно Вы проверяли 5000 квадратов до внесения изменения в программу?
Мне-то Вы писали о проверке 100 штук, а свою просьбу об изменении мотивировали намерением проверять тысячи. :-)

Ту программу я писал для себя и использовал её для проверки только одного квадрата. Интерфейс был наипростейшим. Никакого файлового ввода-вывода не было. Входной квадрат вставлялся прямо в консоли, и туда же через одну миллисекунду выводился результат в виде квадрата, в случае удачи, или слова "Неудача", в противном случае. А когда Вы попросили эту программу для себя, то, памятуя Ваши требования, внёс в неё изменения — ввёл файловый ввод-вывод и переделал под массовую обработку. И как часто бывает при переделке программ, что-то пошло не так, а Вы торопили. Так что часть вины лежит и на Вас. :-)

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 16:42 


10/07/15
286
Интервал 20000000000000000-24000000000000000 полностью проверен

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 17:59 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Begemot82
Надеюсь Вы учли, что на стыках интервалы должны перекрываться.
То есть когда программа останавливается на стоп-линии, то нижней границей следующего интервала должно брать не стоп-линию, а сохранённую стартовую точку, которая есть 32-е простое вниз от стоп-линии. Конечно это не совсем удобно, постараюсь поправить.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 18:13 


10/07/15
286
whitefox в сообщении #1037496 писал(а):
Begemot82
Надеюсь Вы учли, что на стыках интервалы должны перекрываться.
Тогда стоп-границ не было и программу прерывал когда она просчитала значительный кусок за ней.
Проверял еще по найденным 16-кам в перекрывающих интервалах.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 18:19 
Заслуженный участник


20/08/14
11205
Россия, Москва
Я бы хотел обратить внимание на вопрос лицензий и прав. Если захотите участвовать в каких-то глобальных проектах, то надо уточнить позволяет ли primesieve использовать свой код в таких проектах или за это придётся платить. Одно дело использовать выложенный код дома в личных целях, другое дело в каком-то пусть даже и некоммерческом проекте. Возможно никаких ограничений и нет, я не интересовался подробнее, но вот тому кто будет заниматься организацией участия в глобальном проекте - лучше бы уточнить.

-- 15.07.2015, 18:27 --

whitefox
Я в своей программе при запуске начинал просеивание не с указанного числа, а на один блок ранее, благо у меня блоки мелкие (4млн) и просеивалось быстро. КПППЧ с разницей в 4млн у нас ещё не было и думаю ещё очень долго не будет, так что гарантия отсутствия пропусков 100%. При обнаружении КПППЧ конечно ещё проверял захватывает ли она числа больше указанного стартового, чтобы если нет - не дублировать найденные ранее КПППЧ. Впрочем, можно и как-то по другому сделать.

Begemot82
Да, я тоже прерывал проверку лишь после нахождения любой КПППЧ в перекрывающимся интервале. Это уже гарантирует отсутствие пропусков.

-- 15.07.2015, 18:34 --

whitefox в сообщении #1037496 писал(а):
нижней границей следующего интервала должно брать не стоп-линию, а сохранённую стартовую точку, которая есть 32-е простое вниз от стоп-линии.
Можно сильно упросить вычисления, не искать 32-е простое число, а взять число с гарантированным запасом. Который посчитать несложно, берём (из вики) наибольший интервал между соседними простыми числами, он для чисел до 2е17 составляет 1220, умножаем на 32 и получаем что стартовая точка должна быть всего лишь на 40000 меньше. До чисел 2е17 это даёт 100% гарантию. А считать лишний интервал в 40000 (с запасом) или в 1000 (более-менее точно) разницы нет (я так вообще 4млн считал, это всё равно меньше 0.1с).

-- 15.07.2015, 18:47 --

Наверное удобнее просто стоп-линию увеличить на те же 40000 (для чисел до 2е17) и всё ... Очень вряд ли найдётся КПППЧ именно в этом "лишнем" интервале. Ну а даже если и так - будет лишняя проверка надёжности. :-)

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 18:56 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Dmitriy40 в сообщении #1037504 писал(а):
Можно сильно упросить вычисления, не искать 32-е простое число, а взять число с гарантированным запасом. Который посчитать несложно, берём (из вики) наибольший интервал между соседними простыми числами, он для чисел до 2е17 составляет 1220, умножаем на 32 и получаем что стартовая точка должна быть всего лишь на 40000 меньше. До чисел 2е17 это даёт 100% гарантию. А считать лишний интервал в 40000 (с запасом) или в 1000 (почти точно) разницы нет.

Ну у меня идея такая — 32 простых ниже стоп-линии мы уже знаем. Используя следующую функцию из primesieve:
Используется синтаксис C++
/// Store the first n primes >= start in the primes vector.
  /// @pre start <= 2^64 - 2^32 * 10.
  ///
  template <typename T>
  inline void generate_n_primes(uint64_t n, uint64_t start, std::vector<T>* primes)
  {
    if (primes)
    {
      PushBack_N_Primes<T> pb(*primes);
      pb.pushBack_N_Primes(n, start);
    }
  }
для n равного 32 и start равного стоп-линии, находим 32 простых выше стоп-линии, и проверяем эти 64 простых на наличие КПППЧ. После этого стоп-линию можно брать в качестве нижней границы следующего интервала.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 19:08 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
whitefox в сообщении #1037446 писал(а):
А Вы не лукавите?
Точно Вы проверяли 5000 квадратов до внесения изменения в программу?
Мне-то Вы писали о проверке 100 штук, а свою просьбу об изменении мотивировали намерением проверять тысячи..

Из моего письма вам в личку:
Цитата:
Генерацию ассоциативных квадратов организовала.
Опробовала работу вашей программы. Да, работает очень быстро.

У меня такое замечание: желательно убрать вывод на экран сообщения "Неудача".
Представьте: я проверяю несколько тысяч ассоциативных квадратов и для каждого выводится это сообщение. А зачем? Прямо страшно смотреть на это мелькание сообщений тысячу раз подряд.
Если идеальный квадрат будет найден, он запишется в выходной файл, и я там его увижу.
Ну, можно идеальный квадрат и на экран вывести. Он всего-то будет один, если вообще будет

И где лукавство?
Факт налицо: вывод слова "Неудача" был в программе для каждого проверяемого квадрата.
[Вообще я никогда не вру, это так - к сведению. Мама в детстве не научила.]

Цитата:
Так что часть вины лежит и на Вас.

Каюсь, виновата в том, что заставляю вас писать для меня программы. Больше не буду. Извините.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 19:14 
Заслуженный участник


20/08/14
11205
Россия, Москва
whitefox
А я бы просто увеличил стоп линию на 40000 (или на сто тысяч, для гарантии) внутри программы (в файлах не трогал бы) и всё. Т.е. при последнем вызове primesieve указал бы ей в качестве конца интервала <стоп-линия+40000>.
Подозреваю каждый вызов primesieve "дорог", она же похоже снова будет формировать внутри у себя начальные остатки для всех 8млн простых чисел для проверки любого интервала около 2е16 (если бы она этого не делала, то последовательные вызовы с подстыкованными интервалами были бы все последующие быстрее первого, чего не наблюдается и из-за чего Вы выбрали такой огромный интервал проверки в 2млрд). А вот проверить ей на сотню тысяч чисел больше займёт во много раз меньше времени.
Впрочем, сделайте как удобнее и понятнее, думаю разница в скорости в любом случае будет незначительна (по моей грубой оценке процента 3).

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 19:31 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Nataly-Mak в сообщении #1037517 писал(а):
И где лукавство?

На счёт 5000. :-)
В письме, предшествующем процитированному, Вы писали, что собираетесь проверить 100 квадратов. В процитированном письме просите представить, что будет при проверки тысяч. Из чего можно заключить, что тысячи Вы ещё не проверяли. :-) После этого в программу было внесено запрошенное изменение, и только тогда Вы написали, что собираетесь генерить 5000 квадратов. :-) Из чего можно заключить, что 5000 Вы прежней версией не проверяли. Если это и не лукавство, то явное сгущение красок. :wink:

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 19:44 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов

(Оффтоп)

Странная полемика, да ещё со смайликами смеха во множестве. Вам смешно, мне нисколько.
Странно вы понимаете фразу:
Цитата:
Прямо страшно смотреть на это мелькание сообщений тысячу раз подряд.

Где здесь о будущем времени? Я написала слово "Представьте", чтобы вы представили, как это у меня работает с тысячами квадратов. Уже работает, а не будет работать!

Никакого лукавства и сгущения красок я тут не вижу.
Я уже извинилась за доставленные вам неудобства. Ещё раз извиняюсь и впредь постараюсь не причинять вам неудобств.

P.S. В письме, предшествующем процитированному, я писала о намерении проверить много порций ассоциативных квадратов:

Цитата:
Значит, мне надо нагенерировать ассоциативных квадратов штук 100 и их проверять. Потом ещё штук 100 и т.д.
Сейчас попробую организовать генерацию ассоциативных квадратов.

При этом написано "штук 100", а не "100 штук". Это большая разница.


-- Ср июл 15, 2015 21:26:07 --

Begemot82 в сообщении #1037470 писал(а):
Интервал 20000000000000000-24000000000000000 полностью проверен

У вас ещё проверяется интервал с начальной точкой $2.4 \cdot  10^{16}$
Верно?
Я взяла интервал с начальной точкой $2.8 \cdot  10^{16}$
Ну, у меня проверка идёт медленно, работает только одна программа.
Так что, далеко я не уеду :-)

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 20:33 
Заслуженный участник
Аватара пользователя


19/12/10
1546
А тем временем созрела новая версия программы https://yadi.sk/d/o04RwW8hsxLWc, исходник тоже там. :-)

В ней:
  1. добавлена проверка стыка смежных интервалов, что позволяет брать стоп-линию в качестве нижней границы следующего интервала;
  2. введён новый ключ командной строки /c (/C), при использовании которого программа достигшая стоп линии автоматически завершится без необходимости подтверждения, также в стартовом файле можно использовать элемент c либо C;
  3. добавлена минимальная проверка корректности параметров командной строки.

Пожалуйста, проверьте. Вообще не тестировал. :-)

UPD: Ссылка на последнюю версию.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение15.07.2015, 23:44 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
У меня сегодня есть 20-ка :-)

Код:
28043054883640579: 0 4 28 40 100 124 132 160 168 172 210 214 222 250 258 282 342 354 378 382

Ну, 20-ок у Dmitriy40 было много. Вот эта из его результатов, что есть у меня в архиве, самая компактная:

Код:
688734437125247: 0 6 32 36 56 66 84 102 104 126 140 162 164 182 200 210 230 234 260 266

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 695 ]  На страницу Пред.  1 ... 14, 15, 16, 17, 18, 19, 20 ... 47  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Dmitriy40


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group