Cod sursa(job #365852)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 20 noiembrie 2009 01:17:28
Problema GFact Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#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;
}	

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);
		
		if (p%2==0)
		{
		
		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 ", 2*d);
				d+=2;
			}
		}
		}
		else
		{
		
		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;
			}
		}
		}	
	}
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}