Pagini recente » Cod sursa (job #1688125) | Cod sursa (job #449190) | Cod sursa (job #318002) | Cod sursa (job #1990839) | Cod sursa (job #66900)
Cod sursa(job #66900)
#include<fstream.h>
#include<stdio.h>
#include<math.h>
long long p;
long long q, b, nr;
long long 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%2==0) return 0;
for (long d=3; d*d<=x; d+=2)
if (x%d==0) return 0;
return 1;
}
void descomp()
{
for (int 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; break;}
}
}
void aflu()
{
long long i, contor=0;
i=v[nr]*(q-1);
while (contor<q*ex)
{
long long j;
j=i;
if (j%v[nr]==0)
while (j%v[nr]==0)
{
contor+=q;
j/=v[nr];
}
i+=v[nr];
}
freopen("gfact.out","w",stdout);
printf("%lld",i-v[nr]);
}
int main()
{
citire();
descomp();
aflu();
return 0;
}