Pagini recente » Cod sursa (job #2791770) | Cod sursa (job #2543752) | Cod sursa (job #1148130) | Cod sursa (job #2717472) | Cod sursa (job #1605809)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long int a,b,n=0;
long long int gfact(long long int nr,long long int div)
{
long long int r=0;
while (nr>=div) {
r+=nr/div;
nr/=div;
}
return r;
}
long long int caut_bin(long long int n,long long p)
{
long long int pas=1<<30,i=0;
pas*=pas;
while (pas!=0) {
if (gfact(i+pas,n)<n && i+pas<=p*n) i+=pas;
pas/=2;
}
return i+1;
}
int main()
{
long long int d=2,nr,putere;
fin>>a>>b;
while (a>1) {
nr=0;
putere=0;
if (d*d>a) d=a;
while (a%d==0) {
putere++;
a/=d;
}
if (putere>0) nr=caut_bin(d,putere*b);
if (nr>n) n=nr;
d++;
}
fout<<n;
}