Pagini recente » Cod sursa (job #901288) | Cod sursa (job #419883) | Cod sursa (job #64600) | Cod sursa (job #1000472) | Cod sursa (job #357685)
Cod sursa(job #357685)
#include<stdio.h>
long long d[20],p[20],nr,q,a;
const long long MAX=(long long ) 1<<50;
void dsc()
{
for(long long i=2;i*i<a;++i)
if(a%i==0)
{
d[++nr]=i;
while(a%i==0)
{
++p[nr];
a/=i;
}
}
if(a!=1)
{
d[++nr]=a;
p[nr]=1;
}
}
bool fact(long long n,long long i)
{
long long r=0;
while(n)
{
r+=n/d[i];
n/=d[i];
}
return r>=p[i]*q;
}
bool ok(long long b)
{
for(long long i=1;i<=nr;++i)
if(!fact(b,i))
return false;
return true;
}
int main()
{
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld",&a,&q);
dsc();
for(long long i=2;i<=MAX;++i)
if(ok(i))
{
printf("%lld",i);
return 0;
}
return 0;
}