Задание
Для заданного целого числа 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. Схема главной программы
2. Схема подпрограммы
Текст программы
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