Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»
52
Решение. Принцип решения этой задачи напоминает решения обеих предыдущих задач. При
этом алгоритм распознавания простых чисел можно взять из
задачи 17, немного изменив его:
s := 0;
for i := 1
to a do begin
if a mod i = 0 then inc(s)
end;
if s = 2 then inc(count);
Здесь мы предварительно поменяли названия переменных и вместо вывода ответа о простоте
числа работаем со счетчиком найденных простых чисел. Напомним, что в цикле считается количе-
ство всех возможных натуральных делителей числа, и если их 2, то оно простое, и необходимо уве-
личить счетчик простых чисел
count. Когда вся числовая последовательность будет обработана,
останется только вывести на экран значение переменной
count.
Код:
1.
program NumOfPrimes;
2.
3.
var
4.
a, i, s, count: word;
5.
6.
begin
7.
read(a);
8.
count := 0;
9.
while a <> 0 do begin
10.
s := 0;
11.
for i := 1
to a do begin
12.
if a mod i = 0 then inc(s)
13.
end;
14.
if s = 2 then inc(count);
15.
read(a)
16.
end;
17.
writeln(count)
18.
end.
Задача № 43. Проверить, начинается ли каждый из членов последовательности с
десятичной цифры, на которую оканчивается предыдущий
Формулировка. Дана последовательность натуральных чисел, ограниченная вводом нуля.
Проверить, начинается ли каждый из ее членов (со второго) с десятичной цифры, на которую окан-
чивается предыдущий. Например, таковой последовательностью будет являться 14 47 712 2179 9 9
93
0
(также сохранен ограничивающий ноль).
Решение. Задача решается через цикл с предусловием, что характерно для задач на последо-
вательность с ограничителем. При ее решении мы могли бы не рассматривать «вырожденные вари-
анты», в которых на вход будет подаваться, например, пустая последовательность (то есть состоя-
щая из единственного нуля) или последовательность из одного члена, так как на вопрос о том, удо-
влетворяют ли такие последовательности заданному критерию, ответить теоретически достаточно
трудно. Разумнее всего было бы считать выполнение критерия для таких последовательностей не-
определенным, что, однако, в формате даваемого нами ответа не представляется возможным: под
«проверкой» характеристического свойства в данном случае понимается ответ на вопрос: либо «да»,
и последовательность отвечает заданным
требованиям, либо «нет», и, соответственно, не отвечает.
Следовательно, нам нужно вместо ответа о «неопределенности» проверяемого свойства дать
один из допустимых ответов. Наверное, разумно было бы дать при обработке вырожденных случаев