Pagini recente » Cod sursa (job #2442536) | Cod sursa (job #468839) | Cod sursa (job #1970765) | Cod sursa (job #1264268) | Cod sursa (job #2067519)
#include <iostream>
#include<cstdio>
using namespace std;
int p,q;
int legendre(long long n,long long d){
int rasp=0;
while(d<=n){
rasp+=(n/=d);
}
return rasp;
}
bool ver(long long n){
long long d;
d=2;
int ind=0;
while(d*d<=p){
ind=0;
while(n>1 && n%d==0){
n/=d;
ind++;
}
if(legendre(n,d)<ind*q)
return false;
}
if(p>1)
if(legendre(n,p)<q)
return false;
return true;
}
long long cautbin(){
int p2=1<<30;
long long pas=0;
while(p2>0){
if(ver(pas+p2)==false)
pas+=1LL*p2;
p2/=2;
}
return pas+1;
}
int main()
{
FILE*fin,*fout;
fin=fopen("gfact.in","r");
fout=fopen("gfact.out","w");
fscanf(fin,"%d%d",&p,&q);
fprintf(fout,"%lld",cautbin());
return 0;
}