Написать программу на паскале. Для того чтоб проверить, как ее ученики

Написать программу на паскале. Для того чтоб проверить, как ее ученики могут считать, Мария Ивановна каждый год задает им на дом одну и ту же задачу Для данного естественного A отыскать минимальное естественное N такое, что N в степени N (N, умноженное на себя N раз) делится на A. Из года в год и от воспитанника к ученику меняется только число A. Вы решили посодействовать будущим поколениям. Для этого для вас необходимо написать программку, решающую эту задачку Формат входных данных. Во входном файле содержится единственное число A (1lt;=A lt;=1000000000). Формат выходных данных. В выходной файл вывести единственное число N.

Задать свой вопрос
1 ответ

Program Opatvoyamatdostoynauvajeniya;

Var

  i, A: longint;

  x,

  u, j,  

  N, m : longint;

Function FDiv (A, left : LongInt) : LongInt;

var

d,  

i : longint;

begin

d := 1;  

for i := left to Trunc (Sqrt (A)) do

if (A mod i = 0)

then

begin

d := i;  

Break;  

end;

if (d lt;gt; 1)

then

FDiv := d

else  

FDiv := A;

end;

Function g (N, u : longint) : longint;

var

i : longint;  

begin

i := 0;  

while (N mod u = 0)

do

begin

Inc (i);

N := N div u;

end;

g := i;

end;

Begin

Assign (Input, 'input.txt');

Assign (Output, 'output.txt');

Reset (Input);

Read (A);

Close (Input);

m := 0;

N := 1;  

i := FDiv (A, 2);

u := 2;  

while (A gt; 1)

do

begin

N := N * i;  

j := 0;  

 while (A mod i = 0)

 do

begin

Inc (j);

A := A div i;

end;

if (j gt; m)

then

begin

m := j;  

u := i;  

end;

i := FDiv (A, i + 2);

end;

x := 1;

while (g (N * x, u) * N * x lt; m)

do

Inc (x);

N := N * x;  

ReWrite (Output);

Write (N);

Close (Output);

End.

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт