18.
72 2
36 2
18 2
9 3
3 3
1
int n;
int p[100100000];
// p[k] = 0, ako k jeste prost
// p[k] = 1, ako k nije prost
int main() {
int k, u;
int m;
// scanf(“%d”, &n);
n = 100000000;
// n = int.parseInt(Console.ReadLine());
k = 2;
// Formiranje Eratostenovog sita do
// zadatog broja n, tj. odredjivanje
// svih prostih brojeva u intervalu [2,n]
while (k * k <= n) {
if (p[k] == 0) {
u = 2 * k;
while (u <= n) {
p[u] = 1;
u = u + k;
}
}
k++;
}
// Ucitavamo broj koji hocemo da faktorisemo
scanf(“%d”, &m);
k = 2;
while (m != 1) {
if (p[k] == 0) { // Znaci broj k je prost
while (m % k == 0) {
printf(” %d”, k);
m = m / k;
}
}
k++;
}
}