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.