Cod sursa(job #585849)

Utilizator Addy.Adrian Draghici Addy. Data 30 aprilie 2011 12:13:44
Problema NumMst Scor 20
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 10-12 Marime 0.85 kb
#include <cstdio>

#define MAX 10000

bool ok;
int P[MAX], n, m, x, i, j;
long long sol;

int main () {
	
	freopen ("nummst.in", "r", stdin);
	freopen ("nummst.out", "w", stdout);
	
	scanf ("%d", &n);
	
	for (i = 2; i * i <= n; i++)
		if (!P[i]) {
			P[ ++P[0] ] = i;
			for (j = 2 * i; j * j <= n; j += i)
				P[j] = 1;
		}
	
	/*m = n;
	for (i = 1; P[i] * P[i] <= n; i++)
		if (n % P[i] == 0) {
			F[ ++F[0] ] = P[i]; E[0]++;
			while (n % P[i] == 0) {
				n /= P[i];
				E[ E[0] ]++;
			}
		}
	
	if (E[i])*/
	
	m = n; sol = 1;
	for (i = 1; i <= P[0] && P[i] * P[i] <= n; i++)
		while (m % P[i] == 0) {
			if (!ok) {
				x = P[i], ok = 1;
				m /= P[i];
				continue;
			}
			
			m /= P[i];
			sol *= (long long) P[i];
		}
	
	if (m != 1) sol *= m;
	
	for (i = 1; i <= x; i++)
		printf ("%lld ", sol);
	
	return 0;
}