Отвечая на другой вопрос, я наткнулся на вопрос, как я мог найти все факторы целого числа без Symbolic Math Toolbox.
Например:
factor(60)
возвращает:
2 2 3 5
unique(factor(60))
Таким образом, будет возвращать все первичные факторы, "1" .
2 3 5
И я ищу функцию, которая возвращала бы все факторы ( 1 и сам номер, но они были бы хороши)
Предполагаемый вывод для x = 60
:
1 2 3 4 5 6 10 12 15 20 30 60
Я придумал это довольно громоздкое решение, кроме того, что он, вероятно, может быть векторизован, нет ли элегантного решения?
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(:))'
Также я думаю, что это решение не сработает для некоторых больших чисел, поскольку perms требует длины вектора < 11.