←  Целочисленная арифметика

олимпиадники-информатики

»

Совершенные числа

Санек фотография Санек 15 ноя 2012

Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. Требуется найти все совершенные числа от n до m (1 <= n,m <=100000)


Ввод

Два числа n и m

Вывод

В каждой строке вывести совершенные числа на промежутке от n до m. Если таких нет, вывести Absent.

Пример
______
6 6

6
______
4 5

Absent
______

Решение

Циклом бежим от n до m и находим сумму делителей числа i. Если сумма равна i, тогда выводим число i.


var n,m,i:int64;
    f:boolean;
function pr(x:int64):boolean;
var d,s:int64;
begin
  s:=1;
  if(x=1)then begin pr:=false; exit; end;
  d:=2;
  while int64(d)*d<x do
    begin
      if(x mod d=0)then s:=s+d+(x div d);
      d:=d+1;
    end;
  if d*d=x then s:=s+d;
  pr:=(s=x); //if s=x then pr:=true else pr:=false;
end;
begin
  assign(input,'input.txt'); reset(input);
    assign(output,'output.txt'); rewrite(output);
  readln(n,m);
  f:=false;
  for i:=n to m do
    if(pr(i))then begin writeln(i); f:=true; end;
  if not(f) then writeln('Absent');
end.

Ответить

Thomasbeaks фотография Thomasbeaks 29 ноя 2020

Я согласен с вами
Ответить

Horoscchoolo фотография Horoscchoolo 04 дек 2020

Изображение


Ежедневный Гороскоп от НЕЙРОСЕТИ!


Ежедневный астрологический прогноз на текущий день, на завтра и каждый день 2021 года для всех мужчин и женщин. Гороскоп сегодня Козерог Никогда не пропустите Ваш Ежедневный . Наряду с и советами, индивидуально составленными в соответствии с вашим знаком зодиаком, вы также получите...
Ответить