Задание
Для заданного целого числа N получить все совершенные числа меньше N.
Теоретическая часть
Функции используются тогда, когда результат – одно значение. Говорят, что функция возвращает одно значение.
Function имя – Функции (список формальных параллельних типов возвращаемого значения) Var;
Begin
|
End
Вычисления функции
Имя функции (список фактических параметров)
Список фактических и формальных параметров должен отвечать:
1. По количества
2. За порядком
3. По типу
Function f (px:byte) : byte;
Begin
Px:=inc(px);
End; {f}
Begin
Write (f(45));
End
Procedure имя (a:ta; var I,k=read)
Begin
End;
Выбор алгоритма решения задачи
Совершенные числа - это числа, сумма которых равна сумме чисел, которые делятся на это число. Для решения данной задачи, необходимо сделать цикл от 1 до внесенного целого числа, и в этом цикле сделать цикл, в котором будем проверять условие деления чисел и в нем же находить сумму этих чисел.
Описание решения задачи
Для данной задачи необходимо переменные типа word для целого простого числа, которое мы вводим после чего делаем цикл в цикле. В первому цикле проходим числа от 1 до y (то есть внесено целое число). И каждое из этих чисел делимо от 1 до у/2 и проверяем это число совершенное или нет. Если сумма чисел, которые делятся на это число равняется этому числу, тогда оно действительно является совершенным.
Схема алгоритма решения задачи
1. Схема главной программы
![](programs/15_clip_image002.jpg)
2. Схема подпрограммы
![](programs/15_clip_image002_0000.jpg)
Текст программы
program lab;
uses crt;
type
N=word;
var
x:word;
procedure prost (y:N);
var
i,j,s:word;
begin
for i:=1 to y-1 do begin
s:=0;
for j:=1 to trunc(i/2+1) do
if i mod j = 0 then
s:=s+j;
if s=i then
writeln('sovershennie chisla = ',i);
end;
end;
{ocnovnaya prog}
begin
clrscr;
writeln('vvedite celoe chislo');
readln(x);
prost(x);
repeat until keypressed;
end.
Результати работы программы
vvedite celoe chislo:
50000
sovershennie chisla = 1
sovershennie chisla = 6
sovershennie chisla = 28
sovershennie chisla = 496
sovershennie chisla = 8128