Pagini recente » Cod sursa (job #277325) | Cod sursa (job #2510742) | Cod sursa (job #1267811) | Cod sursa (job #1397333) | Cod sursa (job #1688180)
#include <fstream>
using namespace std;
int e[100], d[100], nd , p, q;
int putere (int n,int x)
{
int rez=0;
while(n>=x)
{
rez+=n/x;
n=n/x;
}
return rez;
}
bool divide(int x)
{
for(int i=1;i<=nd;i++)
if(putere(x,d[i])<e[i]*q)
return false;
return true;
}
int caut ()
{
int i=0,pas=1<<30;
while(pas!=0)
{
if(!divide(i+pas))
i+=pas;
pas/=2;
}
return 1+i;
}
int main()
{
int cp, nrp, i=0;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
cin>>p>>q;
int a=2;
cp = p;
while(a*a<=p)
{
if(p%a==0)
{
d[++nd]=a;
nrp=0;
while(p%a == 0)
{
nrp++;
p/=a;
}
e[nd]=nrp;
}
a++;
}
if(p != 1)
{
nd++;
d[nd]=a;
e[nd]=1;
}
p = cp;
cout << caut() << "\n";
return 0;
}