Проект «Простые числа»: Искатель Alex_soldier

РУС ENG

Описание активности искателя Alex_soldier, обзор его проектов, вычислений и отчетов!

Главная Виды чисел Проекты Программы Команды Персоны Отчеты
 

Псевдоним:      Alex_soldier

Реальное имя: Алексей (фамилия и отчество не разглашаются)

Страна, город:  Россия, Москва


Род деятельности:

  • Контекстная реклама (Яндекс.Директ)
  • Консалтинговые и аудиторские услуги в web-маркетинге
  • Корпоративное и индивидуальное обучение специалистов

  • Преподавательская деятельность в ВУЗе
  • Руководство дипломными проектами студентов

  • Ведение тематических рассылок
  • WEB-дизайн (некоммерческие проекты)


Регалии и достижения:

  • Кандидат технических наук
  • Преподаватель ВУЗа с 19-летним стажем (доцент)
  • Научный руководитель более 200 дипломных проектов
  • Начал заниматься web-сайтами и интернет-маркетингом в 1997 году
  • Эксперт по продвижению сайтов (SEO) с 2005 года
  • Опытный специалист по системе Google AdWords
  • Ведущий специалист по системе Яндекс.Директ
  • Эксперт официального Клуба Яндекс.Директ
  • Автор информационно-справочного ресурса по Яндекс.Директ
  • Автор обучающих курсов по Яндекс.Директ
  • Коуч по Яндекс.Директ (подготовлено более 20 специалистов)
  • 5 благодарностей от Службы поддержки Яндекса за активную помощь рекламодателям на Форуме и в Клубе: по итогам 2009, 2011, 2012, 2013, 2014 годов


Личные web-сайты:



Контакты:   Alex_soldier@mail.ru


О себе:

Сейчас уже точно не вспомню, когда я узнал о простых числах и начал интересоваться их поиском. Вероятно, это было в начальной школе - как раз в это время стали появляться доступные карманные калькуляторы.

Простые числа до 100 я запомнил довольно быстро, а вот более крупные (до 1.000 - 2.000) ради интереса частенько проверял путем проверки делимости на малые простые. Про то, что перебирать делители нужно не более чем до квадратного корня, как-то догадался сам после некоторых наблюдений и раздумий.

Как-то раз в старом журнале «Наука и Жизнь» начала 80-х наткнулся на упоминание рекорда в области простых чисел, если не ошибаюсь - 2^86.243 -1. Тогда я не знал, что это число Мерсенна, и что найдено оно было с помощью специального теста. Просто порадовался за энтузиазм неизвестного открывателя и отдал дань уважения его титаническим усилиям.

Ну а у меня доступ к языкам программирования и компьютерам появился только к 8-му классу, когда я перешел учиться в Лицей. Там нас регулярно, раз в неделю, вывозили в институт для проведения уроков ОИВТ в компьютерных аудиториях.

Первую программу по поиску простых чисел я написал на языке Basic годом раньше. Прочитал книжку про этот язык, выучил основные команды, и записал код программы в блокнотик. Когда представилась возможность, набил его на клавиатуре и запустил на исполнение.

Алгоритм был простейший - двойной цикл. Первый перебирал все нечетные числа, начиная с заданного. Второй шел по нечетным делителям с 3 до квадратного корня. Ну и все найденные простые печатались на экран подряд через пробел.

Первые же результаты очень порадовали - буквально за несколько секунд экран покрылся числами и начал сдвигаться вверх, освобождая место все более крупным результатам, превышающим все проверяемые мной ранее вручную.

Второй запуск я совершил, переместив начальную точку в 1.000.000. Числа здесь проверялись значительно дольше: на проверку каждого варианта уходило несколько секунд (неоптимизированный алгоритм & советские компьютеры ИСКРА-1031). Но скоро любопытство было удовлетворено, и я отложил дальнейшие изыскания на несколько лет.

Новый всплеск интереса случился уже на 2-м курсе института. К этому времени я освоил новый язык программирования Turbo-C и работал инженером в компьютерной аудитории ВУЗа. Кроме того, у меня появился и домашний компьютер.

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

Первая версия программы (по сути тот же неоптимизированный двойной цикл) сформировала файл с 78.498 простыми числами первого миллиона за 15 минут. Далее от версии к версии последовала череда улучшений и оптимизаций (алгоритм решета Эратосфена, проверка делимости только на простые делители, сегментирование массивов чисел в памяти, ...). Девятая версия справлялась с той же задачей всего за 10 секунд!

В то время я был довольно сильно ограничен и объемом знаний о языке, и DOS-реализацией программ. Максимальный прорыв, которого мне удалось достичь на тот момент - это увеличение верхней границы чисел в миллион раз (изначально была 2^32 -1). Так что наибольшее обнаруженное мною тогда простое число было 4.294.967.295.999.977.

Позднее последовала череда программ для поиска простых чисел разных видов и в различных последовательностях. Но никаких серьезных целей не преследовалось, программы создавались скорее ради развлечения.

Следующая волна активности была связана со средой Delphi и 64-битными WINDOWS-приложениями. Увеличившийся вдвое целочисленный тип дал прямой доступ к гораздо большему диапазону доступных значений. На текущий момент наибольшее найденное своими силами простое число 9.223.372.036.854.775.783.

На 4-м курсе института снова столкнулся с простыми числами. На этот раз лектор, любивший рассказывать различные истории, поведал о рекорде в сфере простых чисел вида 2^p -1. Позднее я узнал, что это числа Мерсенна, и что их ищет около 100.000 человек по всему миру в рамках проекта GIMPS. В 2001-м году мне снова попалось упоминание об очередном рекорде, я даже заглянул на сайт проекта. Но он был англоязычным, поэтому я просто порадовался и не стал принимать в нем участия.

А зря - тогда мне были доступны значительные вычислительные мощности (десятки компьютеров). Впрочем, они итак не простаивали - в 2002-м я заинтересовался псевдопростыми числами, и активно искал их по модулю 2. Все простые числа проходят тест (2^p -1) mod p = 1, но и некоторые составные тоже. Причем есть семейство - числа Кармайкла, которые проходят этот тест при любом основании, не только при base = 2. Но тогда я искал только по основанию 2, и нашел их несколько сотен или даже тысяч.

В 2006-м году прочитал в Компьютерре статью в 3 частях "Гонки по вертикали: Числа Ферма от Эйлера до наших дней. Начало. Продолжение. Окончание". Узнал о числах Ферма, и о проблеме поиска их делителей. Особенно обрадовало, что один из основных проектов организовал наш соотечественник Леонид Дурман. В начала 2000-х он написал довольно быструю программу и создал сайт FermatSearch.org

Возможно, именно это в итоге и склонило чашу весов - я присоединился к проекту, впервые начав использовать чужое ПО. Леонид к тому времени отошел от дел, и сайтом занимался итальянец Луиджи Морелли (сайт уже был на 3 языках). Зарезервировав себе слишком большой диапазон, я тихо считал его годами, разбивая на части и комбинирую на доступных компьютерах, делая перерывы.

В конце 2015-го оказалось, что уже существует более быстрое ПО для GPU (видеокарты) - mmff.exe, благодаря которому я добил остатки не за год, а за 3 дня! К сожалению, мой диапазон уже оказался посчитан другим участником. Но ничего - я зарезервировал новый, и в перерывах между другими расчетами все еще продолжаю поиск в своей экспоненте.
Подробности - см. отчет 0001

На Новогодних каникулах 2015-го снова нахлынули мысли о поиске рекордного простого числа. Написал программку и стал просеивать диапазон (10^99.999.999 ; 10^99.999.999 + 10^9).

Программа считала неделю, после чего обнаружилась ошибка в больших делителях. Исправил, пересчитал, но уже в феврале обнаружил, что у моего проверяемого миллиарда "отвалился хвост". В итоге отложил до лучших времен.
Подробности - см. отчет 0002

А вот в феврале 2015-го я все-таки присоединился к GIMPS. Из нескольких подающих признаки жизни русскоязычных команд выбрал GIMPS.Russia. Все было довольно печально: сайт на многолетней реконструкции, нет контактов ни с кем из других участников. В итоге за 3 ночи сделал сайт Команды (сейчас он по адресу Mersenne.ru) и стал ежедневно отмечать достижения участников - тогда это были редкие находки очередного делителя.

Год титанических усилий не прошел напрасно - удалось найти контакты многих участников, включая Основателя, привлечь сохранивших активность участников из других российских команд и пробудить некоторых "спящих" уже долгие месяцы и даже годы. Сейчас мы активно тесним команды других стран и сообществ, и с боями пробиваемся к топовым позициям во многих рейтингах Проекта.
Подробности - см. отчет 0003

В планах на ближайшее будущее - поиск арифметических прогрессий из простых чисел, квадруплетов, и некоторых одиночных простых специального вида. Также хочу попробовать свои силы в разложении RSA-чисел. Возможно, осилю и собсвенное ПО: в перспективе хочу создать библиотеку для поддержки длинной арифметики и хотя бы простой PRP-тест. Дальнейшие новости буду публиковать уже в отчетах по конкретному виду поиска!


Список опубликованных отчетов:

0001 (2006.03.26): Поиск делителей числа Ферма F78
0002 (2015.01.04): Поиск наименьшего 100.000.000-значного простого числа
0003 (2015.02.09): Поиск простого числа Мерсенна и делителей составных
0004 (2015.06.27): Поиск AP20 - AP23 с минимальным стартом = 23
0005 (2015.08.01): Поиск пульсаров в проекте BOINC Einshtein@Home
0006 (2016.03.07): Поиск рекордного Квадруплета (Quadruplet)
0007 (2016.06.25): Поиск простых чисел Прота (Proth): 10001 *2^n +1
0008 (2016.07.21): Поиск простых чисел Прота (Proth): k *2^13.333.333 +1
0009 (2016.08.05): Поиск крупных CP, AP или GAP: 2^35.753 ±k

Главная Виды чисел Проекты Программы Команды Персоны Отчеты

Яндекс.Метрика
© Copyright 2014 - 2021 by Alex_soldier
Сайт сделан по технологии AML