Условие этой задачи очень простое. Найдите наименьшее K такое, что K! делится ** N без...

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

Условие этой задачи очень простое. Найдите наименьшее K такое, что K! делится на N без
остатка. K! = 1 · 2 · 3 · ... · (K − 1) · K.
Формат входных данных
В первой и единственной строке дано число N (1 ⩽ N ⩽ 109).


Информатика (12 баллов) | 25 просмотров
Дан 1 ответ
0 голосов

Var k,n,d,m,s:integer;
begin
 k := 1;
 d := 2;
 read(n);
 while n > 1 do
  begin
  s := 0;
  m := 1;
  while n mod d = 0 do
    begin
    if m mod d <> 0 then
      begin
      s := s + d;
      m := s;
      end;
    n := n div d;
    m := m div d;
    end;
  if s > k then k := s;
  d := d + 1
  end;
 writeln(k)
end.

(8.5k баллов)