Найдите все целые числа из промежутка от 300 до 600, у которых сумма делителей равна 50 . решить .

макс2996 макс2996    2   29.08.2019 10:20    1

Ответы
Kkuzbekova Kkuzbekova  06.10.2020 02:40
Программа точно по условию:

Var A,d,S:integer;
Begin
Write('Искомые числа:');
For A:= 300 to 600 do
    Begin
    S:=A+1;
    d:=A div 2;
    While d>1 do
       Begin
       if A mod d = 0 then S:=S+d;
       d:=d-1
       End;
    if S = 50 then Write(' ',A);
    End
End.

Программа, разумеется, не выдаст ни одного числа, т.к. каждое число делится на себя и на единицу. То есть сумма делителей всегда будет больше 301.

Если не брать в расчёт само число и единицу, то программа будет выглядеть так:

Var A,d,S:integer;
Begin
Write('Искомые числа:');
For A:= 300 to 600 do
    Begin
    S:=0;
    d:=A div 2;
    While d>1 do
       Begin
       if A mod d = 0 then S:=S+d;
       d:=d-1
       End;
    if S = 50 then Write(' ',A);
    End
End.

Результат работы программы:

Искомые числа: 301 481 589
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика