Pagini recente » Cod sursa (job #2395322) | Cod sursa (job #2099848) | Cod sursa (job #1241163) | Cod sursa (job #452928) | Cod sursa (job #365867)
Cod sursa(job #365867)
#include <cstdio>
#define file_in "gfact.in"
#define file_out "gfact.out"
int p,q,d,e;
int prim(int X)
{
int i;
if (X==2) return 1;
for (i=3;i*i<=X;++i)
if (X%i==0)
return 0;
return 1;
}
inline int power(int a, int b)
{
int x;
if (b==1)
return a;
else
if (b%2==0)
{
x=power(a,b/2);
return (x*x);
}
else
{
x=power(a,b/2);
return ((x*x)*a);
}
}
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d %d", &p, &q);
if (q==1)
{
if (prim(p))
printf("%d", p);
d=2;
e=0;
while(p%2==0)
{
e++;
p/=d;
}
if (e>0 && p==1)
printf("2");
else
{
d=3;
while(p!=1)
{
e=0;
while(p%d==0)
{
e++;
p/=d;
}
if (e>0 && p==1)
printf("%d ", d);
d+=2;
}
}
}
else
{
p=power(p,q);
d=2;
e=0;
while(p%2==0)
{
e++;
p/=d;
}
if (e>0 && p==1)
printf("4");
else
{
d=3;
while(p!=1)
{
e=0;
while(p%d==0)
{
e++;
p/=d;
}
if (e>0 && p==1)
printf("%d ", d*d);
d+=2;
}
}
}
fclose(stdin);
fclose(stdout);
return 0;
}