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

2.7 Разработка алгоритма подсчета простых чисел

Для закрепления навыков разработки рассмотрим еще один пример.

З а д а ч а.Определить количество простых чисел среди первой тысячи натуральных чисел.

Р е ш е н и е.

Будем поочередно брать все числа от 2 до 1000, испытывать их “на простоту” и считать те, что прошли испытание. В первом приближении алгоритм можно записать так:

Начало

Установить значение первого числа, n = 2;

Установить начальное значение счетчика, count = 0;

Покаn <=1000повторять

Есличисло n — простое,то

увеличить счетчик, count = count + 1;

Вывести на экран значение счетчика count.

Конец

Как видно, для проверки условия может понадобиться нетривиальный алгоритм, который сам будет нуждаться в детализации.

Построим алгоритм, который по заданному значению n установит переменную simple в 1, если n – простое число, или установит simple в 0, если n — составное. После этого, сравнение “simple = 1” можно использовать в качестве условия вместо утверждения “число n — простое” или, еще лучше, заменить условный оператор обычным: count = count + simple. Перепишем оператор "есличисло n — простое,тоувеличить счетчик, count = count + 1" в виде последовательности операторов:

Начало

По заданному n установить значение переменной simple в 0 или 1;

Изменить значение счетчика, count = count + simple;

Конец

Известно, что простыми называются натуральные числа, которые делятся без остатка только на самое себя и 1. Чтобы убедиться в простоте числа n, будем находить остаток от деления n на все числа, меньшие, чем n. Операция взятия остатка от деления числа n на число d есть во многих языках программирования, в языке С она записывается “n % d”, в Паскале — “n mod d”.

Детализируем оператор "По заданному числу n установить значение переменной simple в 0 или 1":

Начало

Установить начальное значение делителя, d = 2;

Покаостаток от деления n на d не равен 0повторять

увеличить d на 1, d = d + 1;

Если d = n,точисло n – простое, simple = 1иначеsimple = 0;

Конец

Алгоритм основан на том, что для простого числа цикл завершиться при достижении делителем d значения n, а для составного числа — раньше.

Заметим, что для проверки числа на простоту достаточно пытаться делить его на все числа от 2 до корня квадратного из n потому, что в составном числе хотя бы один сомножитель должен быть меньше корня квадратного из n. Однако в данном примере мы пренебрегли быстродействием ради простоты алгоритма.

В собранном состоянии алгоритм подсчета простых чисел имеет следующий вид.

Начало

Установить значение первого числа, n = 2;

Установить начальное значение счетчика, count = 0;

Пока n <=1000повторять

Начало

Установить начальное значение делителя, d = 2;

Покаостаток от деления n на d не равен 0повторять

Увеличить d на 1, d = d + 1;

Еслиd = n,точисло n - простое: simple = 1иначеsimple = 0;

Изменить значение счетчика, count = count + simple;

Конец

Вывести на экран значение count;

Конец

Вопросы

1. Запишите в виде последовательности операций алгоритм заварки чая.

2. Напишите алгоритмическую конструкцию выбора меньшего из двух чисел.

3. Разработайте алгоритм, который вводит числа с клавиатуры и перемножает их, пока не будет введено число 0.

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

5. Разработайте алгоритм подсчета суммы: 1 + 1/2 + 1/3 + ...+ +1/100.

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