Pagini recente » Cod sursa (job #1322429) | Cod sursa (job #836959) | Cod sursa (job #533658) | Cod sursa (job #2844108) | Cod sursa (job #1251261)
#include<stdio.h>
long long fact[30001],putere[30001],k,s,q,p;
long long puterea( long long n, long long p){
long long s=0;
while(p <= n){
s += n/p;
n = n/p;
}
return s;
}
bool verif ( long long x){
long long i,cate=0;
for(i=1; i<=k; i++){
s = puterea(x, fact[i]);
if(q*putere[i]>s)
return false;
}
return true;
}
long long cautbin (){
long long i=0,pas=1LL<<60LL;
while(pas!=0){
if(!verif(i+pas))
i+=pas;
pas>>=1;
}
return 1 + i;
}
int main(){
long long i,r,pu;
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld",&p,&q);
i=2;
while(i*i<=p){
if(p%i==0){
pu=0;
while(p%i==0){
p=p/i;
pu++;
}
k++;
fact[k]=i;
putere[k]=pu;
}
i++;
}
if(p!=1){
k++;
fact[k]=p;
putere[k]=1;
}
r=cautbin();
printf("%lld\n",r);
return 0;
}