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.