🔢 Задача на теорию чисел



Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачу — для заданного натурального A найти минимальное натуральное N такое, что N в степени N (N, умноженное на себя N раз) делится на A.



От года к году и от ученика к ученику меняется только число A. Вы решили помочь будущим поколениям. Для этого вам необходимо написать программу, решающую эту задачу.



Решение:

def decomp(n):

ans = []

d = 2

while d * d <= n:

if n % d == 0:

ans.append(d)

n //= d

else:

d += 1

if n > 1:

ans.append(n)

return ans







x = int(input())

if x == 1:

print(1)

else:

a = list(set(decomp(x)))

b = decomp(x)



y = 1

for i in range(len(a)):

y *= a[i]

k = 1

n = k*y



if a[0] != x:

for i in range(40):

t = (i+1)*y

if pow(t, t, x) == 0:

print((i+1) * y)

break

else:

print(a[0])




Пишите свое решение в комментариях👇



@python_job_interview