Pagini recente » Cod sursa (job #927369) | Cod sursa (job #927359) | Cod sursa (job #1407176) | Cod sursa (job #1450211) | Cod sursa (job #518713)
Cod sursa(job #518713)
#include <fstream>
#include <bitset>
using namespace std;
#define dim 44722
#define mod 44722
int q[mod],c[mod],d[mod];
bitset<dim> v;
int main()
{
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int n, f, im, i, j;
fin>>n >>im;
f=2;
q[1]=2;
for(i=2;i<mod;++i)
{
++i;
if(v[i]==0)
{
q[f]=i;
++f;
for(j=i;j<=mod/i;++j)
{
v[i*j]=1;
++j;
}
}
}
i=1;
long long aux=n;
int nr=0;
while(q[i]*q[i]<=aux && n>1)
{
if(n%q[i]==0)
{
c[nr]=q[i];
while(n%q[i]==0)
{
++d[nr];
n/=q[i];
}
d[nr]*=im;
++nr;
}
++i;
}
if(n!=1)
{
c[nr]=n;
d[nr]=im;
++nr;
}
--nr;
long long maxim=0;
for(i=0;i<=nr;++i)
{
aux=c[i];
long long numar=0;
do
{
numar=0;
long long aux1=aux;
while(aux1>1)
{
numar+=aux1/c[i];
aux1/=c[i];
}
aux+=c[i];
}while(numar<d[i]);
if(maxim<aux-c[i])
maxim=aux-c[i];
}
fout<<maxim;
return 0;
}