Pagini recente » Cod sursa (job #1114136) | Cod sursa (job #2356635) | Cod sursa (job #969358) | Cod sursa (job #2787754) | Cod sursa (job #67405)
Cod sursa(job #67405)
#include<fstream.h>
#include<stdio.h>
#include<math.h>
long long unsigned p;
long long unsigned q, b, nr;
long long unsigned a, v[10], ex;
void citire()
{
ifstream in("gfact.in");
in>>p>>q;
in.close();
}
int prim(long x)
{
if (x==2) return 1;
if (x==1) return 0;
if (x%2==0) return 0;
for (long long unsigned d=3; d*d<=x; d+=2)
if (x%d==0) return 0;
return 1;
}
void descomp()
{
int ok=1;b=p;
for (long long unsigned d=2; d<=p; d++)
{
if (p%d==0)
{
v[++nr]=d;
ex=0;
while (p%d==0) { p/=d; ex++;}
if (prim(p)) { v[++nr]=p; ex=1; ok=0;}
}
if (ok==0) {p=v[nr]; break;}
}
}
void aflup()
{
long long unsigned i, contor=0;
i=p;
while (contor<q)
{
long long unsigned j;
j=i;
if (j%p==0)
while (j%p==0)
{
contor++;
j/=p;
}
i+=p;
}
freopen("gfact.out","w",stdout);
printf("%llu",i-p);
}
void aflu()
{
long long unsigned i, contor=0;
i=v[nr];
while (contor<q*ex)
{
long long unsigned j;
j=i;
if (j%v[nr]==0)
while (j%v[nr]==0)
{
contor++;
j/=v[nr];
}
i+=v[nr];
}
freopen("gfact.out","w",stdout);
printf("%llu",i-v[nr]);
}
int main()
{
citire();
if (prim(p)) aflup();
else{
descomp();
aflu();
}
return 0;
}