Pagini recente » Cod sursa (job #3277568) | Cod sursa (job #2199850) | Cod sursa (job #129028) | Cod sursa (job #894629) | Cod sursa (job #365868)
Cod sursa(job #365868)
#include <cstdio>
#define file_in "gfact.in"
#define file_out "gfact.out"
int p,q;
int prim(int X)
{
int i;
if (X==2) return 1;
for (i=3;i*i<=X;++i)
if (i%X==0)
return 0;
return 1;
}
int solve1()
{
int e,d;
if (prim(p))
return p;
d=2;
e=0;
while(p%2==0)
{
e++;
p/=d;
}
if (e>0 && p==1)
return 2;
else
{
d=3;
while(p!=1)
{
e=0;
while(p%d==0)
{
e++;
p/=d;
}
if (e>0 && p==1)
return d;
d+=2;
}
}
}
inline long long power(long long a, long long b)
{
long long x;
if (b==1)
return a;
else
if (b%2==0)
{
x=power(a,b/2);
return (x*x);
}
else
{
x=power(a,b/2);
return ((x*x)*a);
}
}
inline int solve2()
{
long long rez;
int nr=1;
int i;
while(1)
{
rez=1;
nr++;
for (i=2;i<=nr;++i)
rez*=i;
if (rez%p==0)
break;
}
return nr;
}
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &p,&q);
if (q==1)
{
printf("%d", solve1());
}
else
{
p=power(p,q);
printf("%d", solve2());
}
//}
fclose(stdin);
fclose(stdout);
return 0;
}