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
11867
Россия, Москва
Я бы хотел обратить внимание на вопрос лицензий и прав. Если захотите участвовать в каких-то глобальных проектах, то надо уточнить позволяет ли 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
11867
Россия, Москва
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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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