Степень
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачу — для заданного натурального A найти минимальное натуральное N такое, что N в степени N (N, умноженное на себя N раз) делится на A. От года к году и от ученика к ученику меняется только число A.
Вы решили помочь будущим поколениям. Для этого вам необходимо написать программу, решающую эту задачу.
Входные данные
Во входных данных содержится единственное число A (1≤A≤109 — на всякий случай; вдруг Мария Ивановна задаст большое число, чтобы «завалить» кого-нибудь…).
Выходные данные
Выведите число N.
Примеры
Ввод
1
Вывод
1
Ввод
8
Вывод
4
#include <iostream>
using namespace std;
int main()
{
int a ;
int n;
cin >> a;
for ( int n = 1; n <= 30; n++)
{
int t = a;
int f = t;
int n1 = n;
for (int i = 0; i < n; i++)
{
while (n1 != 0 and t != 0)
{
if (n1 > t)
{
n1 = n % t;
}
else
{
t = t % n1;
}
}
f = f / (n1 + t);
}
if (f == 1)
{
cout << n;
return 0;
}
}
n = 1;
for (int p = 2; p * p <= a; p++)
{
if (a % p == 0)
{
n += p;
while (a % p == 0)
{
a /= p;
}
}
}
if (a > 1)
{
n *= a;
}
cout << n;
return 0;
}
Помогите пожалуйста сайт пишет, что программа выдаёт неверный ответ