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

0 голосов
70 просмотров

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


Информатика (35 баллов) | 70 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Программа точно по условию:

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

(34.0k баллов)