Faktoryzacja liczby całkowitej

Odpowiadając na inne, natknąłem się na pytanie, w jaki sposób mogę znaleźć wszystkie czynniki liczby całkowitejbez Symboliczny zestaw narzędzi matematycznych.

Na przykład:

factor(60)

zwraca:

 2     2     3     5
unique(factor(60))

zwróciłby zatem wszystkie czynniki pierwsze,„1” brakujący.

 2     3     5

I szukam funkcji, która zwróciłaby wszystkie czynniki (1 isam numer nie są ważne, ale byłoby miło)

Zamierzone wyjście dlax = 60:

 1     2     3     4     5     6    10    12    15    20    30    60     

Wymyśliłem dość obszerne rozwiązanie, poza tym, że prawdopodobnie mogłoby być wektoryzowane, czy nie ma eleganckiego rozwiązania?

x = 60;

P = perms(factor(x));
[n,m] = size(P);
Q = zeros(n,m);
for ii = 1:n
    for jj = 1:m
        Q(ii,jj) = prod(P(ii,1:jj));
    end
end

factors = unique(Q(:))'

Myślę też, że to rozwiązanie nie powiedzie się dla pewnych dużych liczb, ponieważ perms wymaga długości wektora <11.

questionAnswers(3)

yourAnswerToTheQuestion