Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_lab_programming_advanced.doc
Скачиваний:
19
Добавлен:
23.03.2015
Размер:
59.9 Кб
Скачать

Раздел 2. Простые числа

Простые числа – это целые числа, которые делятся нацело только на единицу и на самих себя. Они играют важную роль в теории чисел. На ранних этапах развития компьютерной техники поиск простых числе был одним из способов проверки вычислительной мощности. Сейчас, как и ранее, поиск простых чисел – распространенная учебная задача для начинающих программистов. Существует несколько алгоритмов их нахождения. В этом разделе описано два алгоритма.

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

Задача 6. Поиск простых чисел делением

Очевидный подход к проверке, является ли данное число простым, состоит в делении его на все целые числа меньше данного числа. Однако такой подход потребует слишком много операций деления. Совершенно очевидно, что нет смысла проверять деление чисел, которые больше, чем половина рассматриваемого числа. Например, делить 13 на 7, 8, 9 и так далее бессмысленно. Кроме того, нет необходимости делить на все числа подряд, меньше половины проверяемого числа. Достаточно поделить на все простые числа, не превышающие половину проверяемого числа. Если число делится на 14, то оно также делится на простые числа 2 и 7, следовательно, проверка деления на 14 излишня. В некоторых языках программирования, например, в Паскале, есть операция вычисления остатка от деления нацело. В этой задаче удобнее использовать именно ее, если ее результат не равен нулю, значит деление происходит нацело.

Задание

Написать программу, которая находит первые 100 простых чисел. В программе нужно зарезервировать массив для 100 простых чисел, занести в него числа 1 и 2. Далее, начиная с числа 3, программа должна перебирать нечетные числа (четные, кроме 2 – заведомо не являются простыми) и проверять, делятся ли они нацело на одно из уже найденных простых чисел (кроме единицы), не превышающих половины рассматриваемого числа. Если оказалось, что рассматриваемое число нацело не делится, записывать его в массив, как новое простое число. В противном случае выбирать следующее число по порядку. Продолжать, пока не будет заполнен массив из 100 простых чисел. Построенный массив вывести на дисплей и в файл.

Задача 7. Алгоритм Эратосфена для поиска простых чисел

Математик древности Эратосфен предложил алгоритм поиска простых чисел, названный "Решето Эратосфена". В этом алгоритме не применяется деление.

Вначале записывается таблица целых чисел. Затем, начиная с двойки, из нее вычеркиваются все числа с шагом 2, кроме самой двойки, до конца таблицы. Затем ищется следующее не вычеркнутое число и вычеркиваются все числа с шагом, равным этому числу, кроме самого этого числа. Алгоритм нужно продолжать, пока не будет достигнута середина таблицы. К этому времени во второй половине таблицы будут вычеркнуты все числа, кратные числам из первой половины.

Задание

Написать программу, которая находит простые числа, используя решето Эратосфена, в диапазоне простых чисел от 1 до 2020, выводит их на дисплей и записывает в файл.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]