• Главная
  • Блог
  • Пользователи
  • Форум
  • Литературное творчество
  • Музыкальное творчество
  • Научно-техническое творчество
  • Художественно-прикладное творчество

МЕТОДЫ НАХОЖДЕНИЯ ПРОСТОГО ЧИСЛА, МЕТОДЫ РЕШЕТА

Опубликовано Ануфриева Евгения Андреевна вкл 29.06.2021 - 0:55
Ануфриева Евгения Андреевна
Автор: 
Поперняк Олег

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

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

Вне математики основные способы применения простых чисел связаны с компьютерами. Компьютеры хранят все данные в виде последовательности нулей и единиц, которая может быть выражена целым числом. Многие компьютерные программы перемножают числа, привязанные к данным. Это означает, что под самой поверхностью лежат простые числа. Когда человек совершает любые онлайн-покупки, он пользуется тем, что есть способы умножения чисел, которые сложно расшифровать хакеру, но легко покупателю. Это работает за счет того, что простые числа не имеют особенных характеристик — в противном случае злоумышленник мог бы получить данные банковской карты.

В данной работе мы сравним методы решета Эратосфена и Аткина. Проверим эффективность данных алгоритмов.

Скачать:

ВложениеРазмер
Файл metody_resheta.docx79.21 КБ
Файл metody_nahozhdeniya_naturalnogo_chisla.pptx601.08 КБ

Предварительный просмотр:

Муниципальное автономное  общеобразовательное учреждение «Средняя общеобразовательная школа г.Зеленоградска»

Проектная работа

На тему:  МЕТОДЫ НАХОЖДЕНИЯ ПРОСТОГО ЧИСЛА, МЕТОДЫ РЕШЕТА.

Выполнил:

Ученик 11 А класса

Поперняк Олег Анатольевич

Руководитель:

Учитель информатики

Ануфриева Евгения Андреевна

г. Зеленоградск

2018 год.


ВВЕДЕНИЕ

Цель моей работы исследовать применение простых чисел в жизни человека.

Для изучения этого вопроса, были поставлены следующие задачи

  1. Дать определение простому числу.
  2. Понять принцип выделения простых чисел из натурального ряда методами решета.
  3. Составить листинги программ реализации методов на языке программирования Си++.
  4. Сравнить эффективность работы алгоритмов Аткина и Эратосфена.

Для решения поставленных задач я использовал:

  1. научную литературу: Гальперин Г. «Просто о простых числах», Чандрасекхаран К. «Введение в аналитическую теорию чисел», Трост Э. «Простые числа», Дэвенпорт Г. «Мультипликативная теория чисел».
  2. Учебное пособие: Математика. 6 класс: учеб. Для общеобразоват. Учреждений/ Н.Я. Виленкин, В.И. Жохов, А.С. Чеснаков, С.И. Шварцбурд
  3. Интернет ресурсы.

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

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

Вне математики основные способы применения простых чисел связаны с компьютерами. Компьютеры хранят все данные в виде последовательности нулей и единиц, которая может быть выражена целым числом. Многие компьютерные программы перемножают числа, привязанные к данным. Это означает, что под самой поверхностью лежат простые числа. Когда человек совершает любые онлайн-покупки, он пользуется тем, что есть способы умножения чисел, которые сложно расшифровать хакеру, но легко покупателю. Это работает за счет того, что простые числа не имеют особенных характеристик — в противном случае злоумышленник мог бы получить данные банковской карты.

В данной работе мы сравним методы решета Эратосфена и Аткина. Проверим эффективность данных алгоритмов.

  1. Определение простого числа

  

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

 Простые числа - это, как известно еще из курса элементарной арифметики, те натуральные числа, которые делятся без остатка только на единицу и самое себя.

Кстати, если натуральное число делится, кроме выше перечисленных, еще на какое-либо число, то оно именуется составным. Одна из самых знаменитых теорем гласит, что любое составное число может быть представлено в виде единственно возможного произведения простых чисел. Несколько любопытных фактов. Во-первых, единица является уникальной в том плане, что, по сути, не принадлежит ни к простым, ни к составным числам. В то же время в научной среде все же принято относить ее именно к первой группе, так как формально она полностью удовлетворяет ее требованиям. Во-вторых, единственным четным числом, затесавшимся в группу «простые числа» является, естественно, двойка. Любое другое четное число сюда попасть попросту не может, так как уже по определению, кроме себя и единицы, делится еще и на два. Простые числа, список которых, как было указано выше, можно начинать с единицы, представляют собой бесконечный ряд, такой же бесконечный, как и ряд натуральных чисел. Опираясь на основную теорему арифметики, можно прийти к выводу, что простые числа никогда не прерываются и никогда не заканчиваются, так как в противном случае неизбежно прервался бы и ряд натуральных чисел. Простые числа не появляются в натуральном ряду беспорядочно, как это может показаться на первый взгляд. Внимательно проанализировав их, можно сразу заметить несколько особенностей, наиболее любопытные из которых связаны с так называемыми числами-«близнецами». Называют их так потому, что каким-то непостижимым образом они оказались по соседству друг с другом, разделенные только четным разграничителем (пять и семь, семнадцать и девятнадцать). Если внимательно к ним присмотреться, то можно заметить, что сумма этих чисел всегда кратна трем. Более того, при делении на тройку левого собрата в остатке всегда остается двойка, а правого – единица. Кроме того, само распределение этих чисел по натуральному ряду можно спрогнозировать, если представить весь этот ряд в виде колебательных синусоид, основные точки которых образуются при делении чисел на три и два. Простые числа являются не только объектом пристального рассмотрения со стороны математиков всего мира, но уже давно и успешно используются в составлении различных рядов чисел, что является основой, в том числе, для шифрографии. При этом следует признать, что огромное количество загадок, связанных с этими замечательными элементами, все еще ждут своих разгадок, многие вопросы имеют не только философское, но и практичное значение

  1. Решето Эратосфена.
  1. Алгоритм.

Решето Эратосфена – алгоритм нахождения всех простых чисел до некоторого целого числа n.Он был создан древнегреческим математиком Эратосфеном.

Для нахождения всех простых чисел не больше заданного числа n, выполним следующие шаги:

  1. Выписать подряд все целые числа от двух до n (2, 3, 4, …, n).
  2. Пусть переменная p изначально равна двум — первому простому числу.
  3. Вычеркнуть из списка все числа от 2p до n, делящиеся на p (то есть, числа 2p, 3p, 4p, …)
  4. Найти первое не вычеркнутое число, большее чем p, и присвоить значению переменной p это число.
  5. Повторять шаги 3 и 4 до тех пор, пока p не станет больше, чем n
  6. Все не вычеркнутые числа в списке — простые числа.
  1.  Псевдокод.

Вход: натуральное число n

Пусть A — булевый массив, индексируемый числами от 2 до n, изначально заполненный значением true.

для i = 2, 3, 4, ..., пока i^2 ≤ n:

если A[i] = true:

для j = i^2, i^2 + i, i^2 + 2i, ..., пока j ≤ n:

A[j] = false

Теперь все числа i, такие что A[i] = true, являются простыми.

  1. Пример для  n = 20.

Запишем натуральные числа начиная от 2 до 20 в ряд:

2   3   4   5   6   7   8   9   10   11   12   13

14   15   16   17   18   19   20

Первое число в списке 2 — простое. Пройдём по ряду чисел, вычёркивая все числа кратные 2 (каждое второе, начиная с 22 = 4):

2   3   4   5   6   7   8   9   10   11   12   13

14   15   16   17   18  19   20

Следующее невычеркнутое число 3 — простое. Пройдём по ряду чисел, вычёркивая все числа кратные 3 (каждое третье, начиная с 32 = 9):

2   3   4   5   6   7   8   9   10   11   12   13

14   15   16   17   18   19   20

Следующее невычеркнутое число 5 — простое. Пройдём по ряду чисел, вычёркивая все числа кратные 5 (каждое пятое, начиная с 52 = 25). И т. д.

Необходимо провести вычёркивания кратных для всех простых чисел p, для которых p^2\le n. В результате все составные числа будут вычеркнуты, а невычеркнутыми останутся все простые числа. Для n = 20 уже после вычёркивания кратных числу 3 все составные числа получаются вычеркнутыми.

  1. Решето Аткина.

Решето Аткина – это быстрый современный алгоритм  нахождения всех простых чисел до заданного целого числа N. Основная идея алгоритма состоит в использовании неприводимых квадратичных форм, то есть представление чисел в виде

  1. Алгоритм.

  1. Все числа, равные (по модулю 60) 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, или 58, делятся на два и заведомо не простые.

Все числа, равные  3, 9, 15, 21, 27, 33, 39, 45, 51, или 57, делятся на три и тоже не являются простыми.

Все числа, равные  5, 25, 35, или 55, делятся на пять и также не простые.

Все эти остатки игнорируются.

  1. Все числа, равные (по модулю 60) 1, 13, 17, 29, 37, 41, 49 или 53, имеют остаток от деления на 4 равный 1. Эти числа являются простыми тогда и только тогда, когда количество решений уравнения

нечётно и само число не кратно никакому квадрату простого числа.

  1. Числа, равные (по модулю 60) 7, 19, 31, или 43, имеют остаток от деления на 6 равный 1. Эти числа являются простыми тогда и только тогда, когда количество решений уравнения  нечётно и само число не кратно никакому квадрату простого.
  2. Числа, равные (по модулю 60) 11, 23, 47, или 59, имеют остаток от деления на 12 равный 11. Эти числа являются простыми тогда и только тогда, когда количество решений уравнения  нечётно и само число не кратно никакому квадрату простого.

Ни одно из рассматриваемых чисел не делится на 2, 3, или 5, соответственно, они не могут делиться и на их квадраты. Поэтому проверка, что число не кратно квадрату простого числа, не включает , , и .

  1.  Предпросеивание.

Для ускорения работы полная версия алгоритма игнорирует все числа, которые кратны одному из нескольких первых простых чисел (2, 3, 5, 7, …). Это делается путем использования стандартных структур данных и алгоритмов их обработки, предложенных ранее Полом Притчардом. Они известны под названием wheel sieving. Количество первых простых чисел выбирается в зависимости от заданного числа N. Теоретически предлагается брать первые простые примерно до  \sqrt {\log N} . Это позволяет улучшить асимптотическую оценку скорости алгоритма на множитель \mathop O(\frac{1}{\log \log N}). При этом требуется дополнительная память, которая с ростом N ограничена как  \exp {\sqrt {\log N}} .

  1. Неразрешенные загадки тысячелетия

Зная некие закономерности распределения простых чисел в натуральном ряду или некую гипотетическую формулу, связывающие число А с ее простыми делителями, злоумышленнику не пришлось бы с таким трудом раскладывать число А. Можно было бы просто воспользоваться этой формулой. Вот здесь мы и подошли к пониманию сути проблемы простых чисел – НЕТ 100% ДОКАЗАННЫХ ФОРМУЛ И ЗАКОНОМЕРНОСТЕЙ ОПИСЫВАЮЩИХ РАСПРЕДЕЛЕНИЕ ПРОСТЫХ ЧИСЕЛ В БЕСКОНЕЧНОМ НАТУРАЛЬНОМ РЯДУ!!!

Проблема отсутствия закономерностей распределения простых чисел занимает умы человечества еще со времен древнегреческих математиков. Благодаря Евклиду мы знаем, что простых чисел бесконечно много. Эрастофен, Сундарам предложили первые алгоритмы тестирования чисел на простоту. Эйлер, Ферма, Лежандр и многие другие известные математики пытались и пытаются по сей день разгадать загадку простых чисел. На сегодняшний момент найдено и предложено множество изящных алгоритмов, закономерностей, но все они применимы лишь для конечного ряда простых чисел или простых чисел специального вида. Передним же краем науки в исследованиях простых чисел на бесконечности считается доказательство гипотезы Римана. Она входит в семерку неразрешенных проблем тысячелетия, за доказательство или опровержение которой математическим институтом Клэя предложена премия в 1.000.000 $.


Заключение.

Я узнал, что простые числа являются не только объектом пристального изучения математиками всего мира, но уже давно и успешно используются. Наиболее распространенным примером использования простых чисел является применение их в криптографии (шифровании данных). Самые безопасные и трудно дешифруемые методы криптографии основаны на применении простых чисел, имеющих в составе более трех сотен цифр.

А знание   открытых законов позволит создать качественно новые решения в следующих областях:

  • Сверхзащищённая операционная система для банков и корпораций.
  • Система борьбы с контрафактной продукцией и поддельными денежными знаками.
  • Система дистанционной идентификации и борьбы с угонами автотранспорта.
  • Система борьбы с распространением компьютерных вирусов.
  • Компьютеры нового поколения на нелинейной системе счисления природы.
  • Математико-биологическое обоснование теории гармонии восприятий.
  • Математический аппарат для нано – технологий.


СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Гальперин Г. Просто о простых числах: Квант. — № 4. 
  2. Математика. 6 класс: учеб. Для общеобразоват. Учреждений/ Н.Я. Виленкин, В.И. Жохов, А.С. Чеснаков, С.И. Шварцбурд. – 29-е изд., испр. – М.: Мнемозина, 2012.
  3. Чандрасекхаран К. Введение в аналитическую теорию чисел: Издательство «Мир», М., 1974.-187с.
  4. Трост Э. Простые числа: Гос. Издательство , М.,1959.-136 с.
  5. Дэвенпорт Г. Мультипликативная теория чисел: Издательство «Наука», М., 1971.-199с.
  6. http://www.numbernautics.ru
  7. http://fb.ru
  8. https://www.mersenne.org
  9. http://moluch.ru
  10.  http://crypto.hut2.ru

Приложение 1

Язык программирования Си++

Алфавит языка включает:

-    прописные и строчные латинские буквы, причем прописная и строчная буквы – это разные символы;
-    знак подчеркивания;
-    арабские цифры от 0 до 9;
-    специальные знаки:
-    " { } ,  |  [ ]  ( )  +   -   /   %   *  .  \  :  ‘  ?  <   =   >   !   &   #   ~   ;   ^
-    пробельные символы: пробел, символы табуляции, символы перехода на новую строку.
-    Из символов алфавита формируются лексемы языка:
-    идентификаторы;
-    ключевые (зарезервированные) слова;
-    знаки операций;
-    константы;
-    разделители (специальные знаки, пробельные символы).
Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

Идентификатор – это имя программного объекта ( имя переменной, имя функции, метка). В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, sysop, SySoP и SYSOP – три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются.
Для улучшения читаемости программы следует давать объектам осмысленные имена. Существует соглашение о правилах создания имен, называемое венгерской нотацией (поскольку предложил ее сотрудник компании Microsoft венгр по национальности), по которому каждое слово, составляющее идентификатор, начинается с прописной буквы, а вначале ставится префикс, соответствующий типу величины, например, iMaxLength, lpfnSetFirstDialog. Другая традиция – разделять слова, составляющие имя, знаками подчеркивания: max_length, number_of_galosh.
Длина идентификатора по стандарту языка не ограничена, но компиляторы и компоновщики налагают на нее ограничения. При выборе идентификатора необходимо иметь в виду следующее:
-    идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;
-    не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных;

Ключевые слова – это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены.

Знак операции – это один или более символов, определяющих действие над операндами. Операндами называются объекты, на которые направлена операция. Например:
http://progzad.ucoz.ru/_pu/1/24018866.gif
Здесь 
x и 5 операнды, + операция, а y – результат операции.
 Внутри знака операции пробелы не допускаются. Операции делятся на унарные (действия с одним операндом), бинарные (действия с двумя операндами) и тернарные(действия с тремя операндами). Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Все знаки операций за исключением [ ], ( ) и ? : представляют собой отдельные лексемы.

Константами называют неизменяемые величины. Константы бывают литеральными (литералами) и типизированными. Литеральные константы характеризуются только своей величиной и неадресуемы. Типизированные константы имеют адрес и величину. Литеральные константы различаются на целые, вещественные (с плавающей точкой), символьные и строковые константы. Компилятор, выделив литеральную константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду.

Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-), например: -218, -022, -0хЗС, -4.8, -0.1е4.
Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (Е или е), порядок – справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.
Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип 
char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом.
Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape-последовательностями. Символ обратной косой черты используется для представления:
-    кодов, не имеющих графического изображения (например, \а – звуковой сигнал, \n – перевод курсора в начало следующей строки);
-    символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса (?) и кавычки (");
-    любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.
Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный табл. I.3 Приложения I, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.
Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку:
"Издательский дом \"Питер\""
Все строковые литералы рассматриваются компилятором как различные объекты. Две одинаковые строки будут занимать две различные области памяти.
Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, а следующая строка воспринимается как продолжение предыдущей. Например, строка
"Никто не доволен своей \
 внешностью, но все довольны \
 своим умом"
полностью эквивалентна строке
"Никто не доволен своей внешностью, но все довольны своим умом".
Строковый литерал представляется массивом символов и в конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи.
 Пустая символьная константа недопустима.

Комментарии помогают при чтении программ. Их наличие в программе можно отнести к правилам хорошего тона программистов. В них можно сформулировать алгоритм функции, указать назначение переменных и пояснить, что выполняется в данной части программы. Комментарии не влияют на размер выполняемой программы. Компилятор удаляет их до генерации кода.
Комментарий либо начинается с двух символов  //  и заканчивается символом перехода на новую строку, либо заключается между символами-скобками /* и */. Примеры:

/ *
Простейшая консольная программа C++Builder.
Выводит на экран "Hello World" и ждет, пока
пользователь не нажмет какую-нибудь клавишу.
*/
getch();     //Ожидание нажатия клавиши.

 Пару символов, которая ограничивает комментарии обоих видов, нельзя разбивать пробелом. Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы из алфавита языка C++, поскольку компилятор комментарии игнорирует. Вложенные комментарии стандартом не допускаются, хотя в некоторых компиляторах разрешены.
Рекомендуется использовать для пояснений //, а скобки /*   */ применять для временного исключения блоков кода при отладке.
 


Приложение 2

Реализация решета Эратосфена на языке программирования Си++

#include

#include

#include

using namespace std;

const int SQRT_MAXN = 100000; // корень из максимального значения N

const int S = 10000;

bool nprime[SQRT_MAXN];

bool bl[S];

int primes[SQRT_MAXN];

int cnt;

int main(int argc, char *argv[])

{

        int n;

   cout << "Enter a number (between 1 and 10000) and press ENTER: ";

        cin >> n;

        int nsqrt = (int)sqrt (static_cast(n));

        for (int i=2; i<=nsqrt; ++i)

                if (!nprime[i]) {

                        primes[cnt++] = i;

                        for (int j=i+i; j<=nsqrt; j+=i)

                                nprime[j] = true;

                }

         int result = 0;

        for (int k=0, maxk=n/S; k<=maxk; ++k) {

                memset (bl, 0, sizeof bl);

                int start = k * S;

                for (int i=0; i

                        for ( int j=max((start+primes[i]-1)/primes[i],2)*primes[i]-start;

                         j

                                bl[j] = true;

                if (k == 0)

                        bl[0] = bl[1] = true;

                for (int i=0; i

                        if (!bl[i])

                                ++result;

        }

        cout << "Total: " <<  result << endl;

   system("PAUSE");

   return EXIT_SUCCESS;

}


Реализация решета Аткина на языке программирования Си++

//убраны доп.проверки делимости на 3 и 5

#include

#include

#include

using namespace std;

int main(int argc, char *argv[])

{

      int limit = 1000;

      bool is_prime[1001];

      int x2, y2;

      int n;

      // Инициализация решета

      int sqr_lim = (int)sqrt( static_cast(limit) );

      for (int i = 0; i <= limit; i++) is_prime[i] = false;

      is_prime[2] = true;

      is_prime[3] = true;

      // Предположительно простые - это целые с нечетным числом

      // представлений в данных квадратных формах.

      // x2 и y2 - это квадраты i и j (оптимизация).

      x2 = 0;

      for (int i = 1; i <= sqr_lim; i++) {

          x2 += 2 * i - 1;

          y2 = 0;

          for (int j = 1; j <= sqr_lim; j++) {

              y2 += 2 * j - 1;

              n = 4 * x2 + y2;

              if ((n <= limit) && (n % 12 == 1 || n % 12 == 5))

                  is_prime[n] = !is_prime[n];

            // n = 3 * x2 + y2;

              n -= x2; // Оптимизация

              if ((n <= limit) && (n % 12 == 7))

                  is_prime[n] = !is_prime[n];

             // n = 3 * x2 - y2;

              n -= 2 * y2; // Оптимизация

              if ((i > j) && (n <= limit) && (n % 12 == 11))

                  is_prime[n] = !is_prime[n];

          }

      }

      // Отсеиваем кратные квадратам простых чисел в интервале [5, sqrt(limit)].

      // (основной этап не может их отсеять)

      for (int i = 5; i <= sqr_lim; i++) {

          if (is_prime[i]) {

              n = i * i;

              for (int j = n; j <= limit; j += n) {

                  is_prime[j] = false;

              }

          }

      }

      // Вывод списка простых чисел в консоль.-------------------------------

      cout << "2, 3, 5";

      for (int i = 6; i <= limit; i++) {  

          if (is_prime[i])  {

             cout <<", "<< i;

          }

      }

      cout << endl;

    system("PAUSE");

    return EXIT_SUCCESS;

}


Приложение 3

#

2p-1

Digits

Date Discovered

Discovered By

Method / Hardware

Perfect Number

1

22-1

1

c. 500 BCE

Ancient Greek mathematicians

21 · (22-1)

2

23-1

1

c. 500 BCE

Ancient Greek mathematicians

22 · (23-1)

3

25-1

2

c. 275 BCE

Ancient Greek mathematicians

24 · (25-1)

4

27-1

3

c. 275 BCE

Ancient Greek mathematicians

26 · (27-1)

5

213-1

4

1456

Anonymous

trial division

212 · (213-1)

6

217-1

6

1588

Pietro Cataldi

trial division

216 · (217-1)

7

219-1

6

1588

Pietro Cataldi

trial division

218 · (219-1)

8

231-1

10

1772

Leonhard Euler

Enhanced trial division

230 · (231-1)

9

261-1

19

1883

Ivan Mikheevich Pervushin

Lucas sequences

260 · (261-1)

10

289-1

27

1911 Jun

R. E. Powers

Lucas sequences

288 · (289-1)

11

2107-1

33

1914 Jun 11

R. E. Powers

Lucas sequences

2106 · (2107-1)

12

2127-1

39

1876 Jan 10

Édouard Lucas

Lucas sequences

2126 · (2127-1)

13

2521-1

157

1952 Jan 30

Raphael M. Robinson

L-L / SWAC

2520 · (2521-1)

14

2607-1

183

1952 Jan 30

Raphael M. Robinson

L-L / SWAC

2606 · (2607-1)

15

21,279-1

386

1952 Jun 25

Raphael M. Robinson

L-L / SWAC

21,278 · (21,279-1)

16

22,203-1

664

1952 Oct 07

Raphael M. Robinson

L-L / SWAC

22,202 · (22,203-1)

17

22,281-1

687

1952 Oct 09

Raphael M. Robinson

L-L / SWAC

22,280 · (22,281-1)

18

23,217-1

969

1957 Sep 08

Hans Riesel

L-L / BESK

23,216 · (23,217-1)

19

24,253-1

1,281

1961 Nov 03

Alexander Hurwitz

L-L / IBM 7090

24,252 · (24,253-1)

20

24,423-1

1,332

1961 Nov 03

Alexander Hurwitz

L-L / IBM 7090

24,422 · (24,423-1)

21

29,689-1

2,917

1963 May 11

Donald B. Gillies

L-L / ILLIAC II

29,688 · (29,689-1)

22

29,941-1

2,993

1963 May 16

Donald B. Gillies

L-L / ILLIAC II

29,940 · (29,941-1)

23

211,213-1

3,376

1963 Jun 02

Donald B. Gillies

L-L / ILLIAC II

211,212 · (211,213-1)


24

219,937-1

6,002

1971 Mar 04

Bryant Tuckerman

L-L / IBM 360/91

219,936 · (219,937-1)

25

221,701-1

6,533

1978 Oct 30

Landon Curt Noll & Laura Nickel

L-L / CDC Cyber 174

221,700 · (221,701-1)

26

223,209-1

6,987

1979 Feb 09

Landon Curt Noll

L-L / CDC Cyber 174

223,208 · (223,209-1)

27

244,497-1

13,395

1979 Apr 08

Harry Lewis Nelson & David Slowinski

L-L / Cray 1

244,496 · (244,497-1)

28

286,243-1

25,962

1982 Sep 25

David Slowinski

L-L / Cray 1

286,242 · (286,243-1)

29

2110,503-1

33,265

1988 Jan 28

Walter Colquitt & Luke Welsh

L-L / NEC SX-2

2110,502 · (2110,503-1)

30

2132,049-1

39,751

1983 Sep 19

David Slowinski

L-L / Cray X-MP

2132,048 · (2132,049-1)

31

2216,091-1

65,050

1985 Sep 01

David Slowinski

L-L / Cray X-MP/24

2216,090 · (2216,091-1)

32

2756,839-1

227,832

1992 Feb 19

David Slowinski & Paul Gage

L-L / Maple on Harwell Lab Cray-2

2756,838 · (2756,839-1)

33

2859,433-1

258,716

1994 Jan 04

David Slowinski & Paul Gage

L-L / Cray C90

2859,432 · (2859,433-1)

34

21,257,787-1

378,632

1996 Sep 03

David Slowinski & Paul Gage

L-L / Cray T94

21,257,786 · (21,257,787-1)

35

21,398,269-1

420,921

1996 Nov 13

GIMPS / Joel Armengaud

L-L / Prime95 on 90 MHz Pentium PC

21,398,268 · (21,398,269-1)

36

22,976,221-1

895,932

1997 Aug 24

GIMPS / Gordon Spence

L-L / Prime95 on 100 MHz Pentium PC

22,976,220 · (22,976,221-1)

37

23,021,377-1

909,526

1998 Jan 27

GIMPS / Roland Clarkson

L-L / Prime95 on 200 MHz Pentium PC

23,021,376 · (23,021,377-1)

38

26,972,593-1

2,098,960

1999 Jun 01

GIMPS / Nayan Hajratwala

L-L / Prime95 on 350 MHz Pentium II IBM Aptiva

26,972,592 · (26,972,593-1)

39

213,466,917-1

4,053,946

2001 Nov 14

GIMPS / Michael Cameron

L-L / Prime95 on 800 MHz Athlon Thunderbird

213,466,916 · (213,466,917-1)

40

220,996,011-1

6,320,430

2003 Nov 17

GIMPS / Michael Shafer

L-L / Prime95 on 2 GHz Dell Dimension

220,996,010 · (220,996,011-1)

41

224,036,583-1

7,235,733

2004 May 15

GIMPS / Josh Findley

L-L / Prime95 on 2.4 GHz Pentium 4 PC

224,036,582 · (224,036,583-1)

42

225,964,951-1

7,816,230

2005 Feb 18

GIMPS / Martin Nowak

L-L / Prime95 on 2.4 GHz Pentium 4 PC

225,964,950 · (225,964,951-1)

43

230,402,457-1

9,152,052

2005 Dec 15

GIMPS / Curtis Cooper & Steven Boone

L-L / Prime95 on 2 GHz Pentium 4 PC

230,402,456 · (230,402,457-1)


44

232,582,657-1

9,808,358

2006 Sep 04

GIMPS / Curtis Cooper & Steven Boone

L-L / Prime95 on 3 GHz Pentium 4 PC

232,582,656 · (232,582,657-1)

45

237,156,667-1

11,185,272

2008 Sep 06

GIMPS / Hans-Michael Elvenich

L-L / Prime95 on 2.83 GHz Core 2 Duo PC

237,156,666 · (237,156,667-1)

46*

242,643,801-1

12,837,064

2009 Jun 04

GIMPS / Odd M. Strindmo

L-L / Prime95 on 3 GHz Core 2 PC

242,643,800 · (242,643,801-1)

47*

243,112,609-1

12,978,189

2008 Aug 23

GIMPS / Edson Smith

L-L / Prime95 on Dell Optiplex 745

243,112,608 · (243,112,609-1)

48*

257,885,161-1

17,425,170

2013 Jan 25

GIMPS / Curtis Cooper

L-L / Prime95 on Intel Core2 Duo E8400 @ 3.00GHz

257,885,160 · (257,885,161-1)

49*

274,207,281-1

22,338,618

2016 Jan 07

GIMPS / Curtis Cooper

L-L / Prime95 on Intel i7-4790 @ 3.60GHz

274,207,280 · (274,207,281-1)


Заключение.

Я узнал, что простые числа являются не только объектом пристального изучения математиками всего мира, но уже давно и успешно используются. Наиболее распространенным примером использования простых чисел является применение их в криптографии (шифровании данных). Самые безопасные и трудно дешифруемые методы криптографии основаны на применении простых чисел, имеющих в составе более трех сотен цифр.

А знание   открытых законов позволит создать качественно новые решения в следующих областях:

  • Сверхзащищённая операционная система для банков и корпораций.
  • Система борьбы с контрафактной продукцией и поддельными денежными знаками.
  • Система дистанционной идентификации и борьбы с угонами автотранспорта.
  • Система борьбы с распространением компьютерных вирусов.
  • Компьютеры нового поколения на нелинейной системе счисления природы.
  • Математико-биологическое обоснование теории гармонии восприятий.
  • Математический аппарат для нано – технологий.

Список литературы:

  1. Гальперин Г. Просто о простых числах: Квант. — № 4. 
  2. Математика. 6 класс: учеб. Для общеобразоват. Учреждений/ Н.Я. Виленкин, В.И. Жохов, А.С. Чеснаков, С.И. Шварцбурд. – 29-е изд., испр. – М.: Мнемозина, 2012.
  3. Чандрасекхаран К. Введение в аналитическую теорию чисел: Издательство «Мир», М., 1974.-187с.
  4. Трост Э. Простые числа: Гос. Издательство , М.,1959.-136 с.
  5. Дэвенпорт Г. Мультипликативная теория чисел: Издательство «Наука», М., 1971.-199с.
  6. http://www.numbernautics.ru
  7. http://fb.ru
  8. https://www.mersenne.org
  9. http://moluch.ru
  10. http://crypto.hut2.ru


Предварительный просмотр:
Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com

Подписи к слайдам:

Слайд 1

Методы нахождения натурального числа Выполнил ученик 11 класса: Поперняк Олег Научный руководитель учитель информатики: Ануфриева Е.А Муниципальное автономное общеобразовательное учреждение «Средняя общеобразовательная школа г.Зеленоградска » 2018 г.

Слайд 2

Цель: исследовать применение простых чисел в жизни человека. Задачи : Дать определение простому числу. Понять принцип выделения простых чисел из натурального ряда методами решета. Составить листинги программ реализации методов на языке программирования Си++. Сравнить эффективность работы алгоритмов Аткина и Эратосфена.

Слайд 3

Простое число - натуральное число, которое делятся без остатка только на единицу и само себя . Применение: криптография ( шифрование данных). Самые безопасные и трудно дешифруемые методы криптографии основаны на применении простых чисел, имеющих в составе более трех сотен цифр.

Слайд 5

Решето Эратосфена Решето Эратосфена- алгоритм нахождения всех простых чисел до некоторого целого числа n . Алгоритм: Выписать подряд все числа от 2 до n ( 2,3,.., n) . Найти первое не вычеркнутое число, большее чем p и присвоить значению переменной p это число. Вычеркнуть из списка все числа от 2 p до n , делящиеся на p (2p,3p,4p,…). Повторять шаги 2 и 3 до тех пор, пока p не станет больше n . Все не вычеркнутые числа в списке – простые числа.

Слайд 6

Эратосфен

Слайд 7

Решето Аткина Решето Аткина – это быстрый современный алгоритм нахождения всех простых чисел до заданного целого числа N. Основная идея алгоритма состоит в использовании неприводимых квадратичных форм, то есть представление чисел в виде Алгоритм: Выписать подряд все числа от 1 до n ( 2,3,.., n ) . Вычисляются три уравнения : 4*x^2+y^2; 3*x^2+y^2; 3*x^2-y^2 , значение вычисляется только при x>y . Учитывая что x,y <= Для каждого вычисленного значения уравнения вычисляются остатки от деления на 12, причем если остаток равен 1 или 5 для значения первого уравнения; если остаток равен 7 для значения второго уравнения ; если остаток равен 11 для значения третьего уравнения. То эти числа помечаются в последовательности как простые. 4. На последнем этапе проверяется кратность помеченных чисел квадратам простых чисел из диапазона от 5 до .Если число кратно квадрату, то оно помечается как составное.

Слайд 8

=6,324553

Слайд 13

Проверяем кратность помеченных чисел квадратам простых из диапазона от 5 до 6 . 5 — простое число, 6 — составное значит проверяем на кратность 5^2=25 помеченные числа Простые числа: 2 3 5 7 11 13 17 19 23 29 31 37 Аткин

Слайд 14

10 000 000 1.275 с. 100 000 000 20.088 с. 1 000 000 000 477.848 с. 10 000 000 0.15 с. 100 000 000 2.16 с. 1 000 000 000 48.76 с. Время работы алгоритма Эратосфена Время работы алгоритма Аткина Символов в числе Символов в числе Время работы Время работы рост превосходства алгоритма Аткина

Слайд 15

Основные выводы Использование метода решета Аткина наиболее эффективно. Изучение простых чисел важно для науки и безопасности хранения данных в компьютере и сети интернет.

Слайд 16

позволяет создать качественно новые решения в следующих областях: Сверхзащищённая операционная система для банков и корпораций. Система борьбы с контрафактной продукцией и поддельными денежными знаками. Система дистанционной идентификации и борьбы с угонами автотранспорта. Система борьбы с распространением компьютерных вирусов. Компьютеры нового поколения на нелинейной системе счисления природы. Математико-биологическое обоснование теории гармонии восприятий. Математический аппарат для нано – технологий.

Слайд 17

Спасибо за внимание!

Поделиться:

Рисуем кактусы акварелью

Извержение вулкана

Галка в чужих перьях

Гораздо больше риска в приобретении знаний, чем в покупке съестного

Горячо - холодно