Pagini recente » Cod sursa (job #2563067) | Cod sursa (job #2613377) | Cod sursa (job #3031785) | Cod sursa (job #2456319) | Cod sursa (job #29039)
Cod sursa(job #29039)
#include <fstream.h>
#include <math.h>
#define max 5000
long p, q, baza[max], dim;
long ep[max];
void desc(long baza[max], long ep[max], long p, long q, long &dim)
{
long i, d=2, cp=sqrt(p);
while (p!=1 && d<=cp)
{
if (p%d==0)
{for (i=0; i<dim; i++) if (baza[i]==d) break;
baza[i]=d;
while (p%d==0)
{p/=d; ep[i]++;}
ep[i]*=q;
if (i==dim) dim++;
}
d++;
}
if (p>1) {baza[dim]=p; ep[dim++]=q; }
}
int main()
{
long i, ci, j;
ifstream f("gfact.in");
ofstream g("gfact.out");
f>>p>>q;
f.close();
if (p==1) g<<"0\n";
else {
desc(baza, ep, p, q, dim);
i=2;
while (1)
{ci=i;
for (j=0; j<dim && ci!=1; j++)
while (ci%baza[j]==0 && ep[j])
{ci/=baza[j]; ep[j]--; }
for (j=0; j<dim; j++) if (ep[j]) break;
if (j==dim) break;
i++;
}
g<<i<<"\n";
}
g.close();
return 0;
}