Similar presentations:
Создание программы для поиска парных простых чисел, превосходящих ранее найденные
1.
Государственное бюджетное общеобразовательное учреждение городаМосквы «Школа № 1155»
СОЗДАНИЕ ПРОГРАММЫ ДЛЯ ПОИСКА ПАРНЫХ ПРОСТЫХ ЧИСЕЛ,
ПРЕВОСХОДЯЩИХ РАНЕЕ НАЙДЕННЫЕ
Участник:
ученик 10 «И» класса ГБОУ Школа
№ 1155 Васильев Олег Владимирович
Руководитель:
педагог ГБОУ Школа № 1155
Юсупова Кристина Олеговна
Москва, 2025
2.
Цель работыЦелью моего проекта являются создание алгоритма по поиску простых чиселблизнецов и его программная реализация для нахождения нового наибольшего числаблизнеца.
2
3.
Программные средстваСреда программирования Visual Studio Code
Язык программирования C++
Библиотеки GMP и OpenMP
3
4.
Проблемачисел-близнецов
4
5.
Начало алгоритмаИзначально генерируются числа вида 6k ± 1, начиная от наибольшего известного числа
близнеца – 2996863034895 * 21290000 ± 1
5
6.
Проверка на простотуПосле этого полученные числа проходят проверяются на простоту,
при помощи теста
алгоритма состоящего из двух частей:
1. тест на деление на простые числа до 10000
2. тест Миллера – Рабина (вероятностный тест на простоту)
Встроенная функция библиотеки GMP оказалась быстрее чем написанный вручную алгоритм,
так что была использована именно она.
6
7.
Тест Миллера-РабинаМалая теорема Ферма:
Если n – простое число, и ‘a’ целое число не делящееся на n, то an - 1 ≡ 1 (mod n).
1. Пусть n – число которое надо проверить на простоту. Представляем число n - 1 в виде d * 2s,
где d – нечетное целое число и s – максимально возможное целое число.
2. Берём случайное число ‘a’ из отрезка [2; n – 2].
3. Считаем x = ad mod n. Если x равен 1 или n – 1, то n вероятно простое, выбираем новое ‘a’.
4. Иначе на s – 1 итерациях цикла, вычисляем x = x2 mod n
• Если x = 1, число составное.
• Если x = n – 1, число вероятно простое, выбираем новое ‘a’.
5. Если на всех s – 1 итерациях x не было равно n – 1, то число n составное.
6. Число простое, если за все итерации не было доказано иное.
7
8.
Параллельные вычисленияБлагодаря параллельным вычислениям
была достигнута высокая
производительность программы, например
был использован цикл в каждом потоке
которого числа проверялись на простоту.
8
9.
Формат выводаДля удобства записи числа будут
выводиться в формате n * 2s ± 1, в
случае если они простые и
небольшая пометка с количеством
проверенных чисел, если числа
оказались составными.
Вывод чисел
простых чисел
Вывод составных
чисел
9
10.
Удаленный серверДля лучшей производительности
программа была запущена на
удаленном сервере, основной
деталью которого был процессор
AMD Ryzen 9 5900X, который имеет
12 ядер и 24 потока с частотой 3.7
ГГц. Для доступа к серверу
Сервер был приобретён здесь:
https://hostkey.ru/dedicated-servers/ultra-fast/#
используется IPMI интерфейс.
10
11.
Вывод и результатыВ рамках текущего проекта создана программа, с помощью которой мы стремимся к
обнаружению новых рекордных пар чисел-близнецов, что, как ожидается, внесет
существенный вклад в теорию чисел.
Для поставленной цели было изучено много материала об истории данного
математического соревнования по поиску чисел; был освоен весь необходимый материал
по реализованным в проекте тестам на определение принадлежности чисел к простым
числам, улучшены навыки программирования на выбранном языке (знакомство с новыми
библиотеками, возможностями организации структуры программы для эффективной
работы). Данное исследование подтверждает, что применение модифицированных
приемов и программных подходов в решении поставленной проблемы может привести к
новым значимым открытиям как в области математики, так и в программировании.
11
12.
Список литературы1.
К.
Ю.
Поляков.
Программирование.
Python.
C++
:
учебное
пособие
для
пособие
для
пособие
для
пособие
для
общеобразовательных организаций : в 4 ч. : издание «Просвещение» / Ч. 1
2.
К.
Ю.
Поляков.
Программирование.
Python.
C++
:
учебное
общеобразовательных организаций : в 4 ч. : издание «Просвещение» / Ч. 2
3.
К.
Ю.
Поляков.
Программирование.
Python.
C++
:
учебное
общеобразовательных организаций : в 4 ч. : издание «Просвещение» / Ч. 3
4.
К.
Ю.
Поляков.
Программирование.
Python.
C++
:
учебное
общеобразовательных организаций : в 4 ч. : издание «Просвещение» / Ч. 4
5.
Тест
простоты
Миллера-Рабина
[Электронный
ресурс]
URL:
https://foxford.ru/wiki/informatika/test-prostoty-millera-rabina (дата обращения: 13 ноября 2024)
6.
Онлайн-энциклопедия целочисленных последовательностей (OEIS) [Электронный
ресурс] URL: oeis.org (дата обращения: 6.09.24)
11
programming