Найти все числа, не превосходящие n, которые равны произведению своих делителей меньших n - Pascal
Формулировка задачи:
Найти все числа, не превосходящие n, которые равны произведению своих делителей меньших n (Реализовать функцию, вычисляющую произведение делителей числа).
Решение задачи: «Найти все числа, не превосходящие n, которые равны произведению своих делителей меньших n»
textual
Листинг программы
function pr_del(n:integer):integer;
var i:integer;
begin
if n<2 then result:=0
else result:=1;
for i:=2 to n div 2 do
if n mod i=0 then result:=result*i
end;
var n,i,k:integer;
begin
write('n=');
readln(n);
k:=0;
for i:=1 to n do
if pr_del(i)=i then
begin
k:=1;
writeln(i);
end;
if k=0 then write('таких чисел нет');
end.
Объяснение кода листинга программы
- Объявляется функция
pr_delс параметромnтипаintegerи возвращаемым значением типаinteger. - Объявляется переменная
iтипаinteger. - Внутри функции проверяется условие: если
nменьше 2, тоresultравно 0, иначеresultравно 1. - В цикле от 2 до
nделенного на 2 проверяется каждое число на кратность и в случае успешной проверки умножается наresult. - В основной программе объявляются переменные
n,iиkтипаinteger. - Запрашивается ввод значения переменной
n. - Инициализируется переменная
kравная 0. - В цикле от 1 до
nвызывается функцияpr_del, и если результат функции равен текущему числуi, то переменнаяkустанавливается в 1 и выводится числоi. - Если после цикла
kосталась равной 0, то выводится сообщениетаких чисел нет.