Проверочная работа с решением по программированию на языке
Pascal. Циклы
Формулировка. Дано натуральное число. Подсчитать общее
количество его делителей.
Решение. Задача достаточно похожа на две предыдущие. В
ней также необходимо провести перебор в цикле некоторого количества натуральных
чисел на предмет обнаружения делителей n, но при этом необходимо найти не первый из
них с какого-либо конца отрезка [1, n] (это отрезок, содержащий все числа от 1 до n
включительно), а посчитать их. Это можно сделать с помощью счетчика count,
который нужно обнулить непосредственно перед входом в цикл. Затем в условном
операторе if в случае истинности условия делимости числа n (n mod i
= 0) нужно увеличивать
счетчик count на единицу (это удобно делать с помощью оператора inc).
Алгоритм на
естественном языке:
1) Ввод n;
2) Обнуление переменной count
(в силу необходимости работать с ее значением без предварительного присваивания
ей какого-либо числа)
3) Запуск цикла, при котором i
изменяется от 1 до n. В цикле:
1.
Если n
делится на i (то есть, остаток от деления числа n на
i равен 0), то увеличиваем значение переменной count
на 1;
4) Вывод на экран значения переменной count.
Код:
1. program CountDiv;
2.
3. var
4. i, n, count:
word;
5.
6. begin
7. readln(n);
8. count := 0;
9. for i := 1
to n do begin
10.
if n mod i = 0 then inc(count)
11.
end;
12.
writeln(count)
13.
end.
|
Формулировка. Дано натуральное число. Проверить, является
ли оно простым.
Примечание: простым
называется натуральное число, которое имеет ровно два различных натуральных
делителя: единицу и само это число.
Решение. Задача отличается от предыдущей только тем,
что вместо вывода на экран числа делителей, содержащегося в переменной count,
необходимо выполнить проверку равенства счетчика числу 2. Если у числа найдено
всего два делителя, то оно простое и нужно вывести положительный ответ, в
противном случае – отрицательный ответ. А проверку через условный оператор, как
мы уже знаем, можно заменить на вывод результата самого булевского выражения с
помощью оператора write (writeln).
Код:
1. program PrimeTest;
2.
3. var
4. i, n, count:
word;
5.
6. begin
7. readln(n);
8. count := 0;
9. for i := 1
to n do begin
10.
if n mod i = 0 then inc(count)
11.
end;
12.
writeln(count = 2)
13.
end.
|
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.