Написать программку на паскале. Для того чтоб проверить, как ее воспитанники
Написать программку на паскале. Для того чтоб проверить, как ее воспитанники могут считать, Мария Ивановна каждый год задает им на дом одну и ту же задачку Для данного естественного A отыскать малое натуральное N такое, что N в ступени N (N, умноженное на себя N раз) делится на A. Из года в год и от воспитанника к ученику изменяется только число A. Вы решили помочь будущим поколениям. Для этого для вас необходимо написать программку, решающую эту задачку Формат входных данных. Во входном файле содержится единственное число A (1lt;=A lt;=1000000000). Формат выходных данных. В выходной файл вывести единственное число N.
Задать свой вопросProgram AnimeTop;
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.
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.
Разные вопросы.