Два предупреждения, дисклеймера, так сказать.
1) Алгоритм простой как пробка. Я практически уверен что можно быстрее.
2) Язык не указан, хорошо бы использовать C, но в C всегда было очень весело с динамическими массивами, так что Perl. Если что — переведёте, Perl неплохо читается.
use strict;
my @array;
my $num = <>; #Input
for (my $i = 2; $num > 1; $i++) {
if (!($num % $i)) {
push @array, ($i);
$num /= i;
}
}
Результат лежит в массиве @array.