Найти сумму нечетных делителей натурального числа — Pascal(Паскаль)

uses CRT;
VAR
 Num, i, Sum: Longint;
 Code: Integer;
BEGIN
 {Опять два способа: через строку и через MOD}
 Write('Введите целое число: ');
 repeat
  {$I-} ReadLn(Num); {$I+}
  (* {$I-} означает "отключить контроль операций ввода/вывода"
   При этом при ошибке не происходит аварийного завершения
   работы программы, но код оперции генерируется.
   {$I+} - включить контроль. Это нужно всегда иметь включенным.
   Вывод на диск ... - это тоже операции ввода/вывода *)
  code := IOResult;   {Узнаем код операции}
  if code <> 0 then
   Write('Ошибка ввода. Повторите');
 until code = 0;      {О кодах достаточно знать одно - 0 = хорошо}
 Sum := 0;
 {Опять неопределенность: 1 и само число считать делителями}
 for i:=1 to Num do
  if (Num mod i = 0) {значит делитель}
     and odd(i) {нечетный}
       then
       begin
         Sum := Sum + i;
         WriteLn(i); {для тестирования}
       end;
 Writeln('Сумма нечетных делителей = ', Sum);
END.

Следующий вариант

var
a,i,s:integer;
begin
for i:=3 to a-1 do
if (a mod i=0)and(ord(i))then s:=s+i;
writeln(s);
readln;
end.

Leave a Comment

3 + 7 =