<h3>PascalABC.NET 3.4.2, сборка 1859 от 08.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var X := ArrRandom(ReadInteger('A='), -21, 21);
X.Println;
X.Sorted.Println;
X.Where(t -> t.IsOdd).OrderDescending.Println
end.
<h3>A= 18</h3><h3>9 9 -10 21 -11 -13 -2 19 5 20 -5 20 11 -6 -2 -10 14 -12</h3><h3>-13 -12 -11 -10 -10 -6 -5 -2 -2 5 9 9 11 14 19 20 20 21</h3><h3>21 19 11 9 9 5 -5 -11 -13</h3>
Число считается совершенным, если оно равно сумме своих делителей, исключая себя самого. Для проверки, является ли число N совершенным, полагаем будущую сумму делителей равной 1 (на единицу число всегда делится) и последовательно делим N на числа, начиная от 2 и заканчивая N/2.
Если число делится без остатка на очередной делитель, добавляем его к сумме. После завершения цикла делений сравниваем сумму с N и в случае равенства объявляем число N совершенным. В начале алгоритма проверяем, чтобы N было больше 1, в противном случае сразу объявляем число не совершенным.
var
i,n,s:longint;
begin
Write('Введите натуральное число: '); Read(n);
if n=1 then Writeln('Число 1 не является совершенным')
else begin
s:=1;
for i:=2 to (n div 2) do
if (n mod i)=0 then s:=s+i;
if s=n then Writeln('Число является совершенным')
else Writeln('Число не является совершенным')
end
end.
<em><u>Тестовое решение:</u></em>
Введите натуральное число: 33550336
Число является совершенным
Введите натуральное число: 543252
Число не является совершенным
Ответ:
Первое слово - программа
Второе - разряд
Третье - байт
Суммарное количество гласных-6
Int......................