нахождение всех множителей числа

Я новичок в Matlab, и для значений a, l и w мне нужно найти все значения для l в наборе данных и соответствующие значения w.

a=10;
l=(0:10)
w=(0:10)
for l,d
       if a == l.*w
           disp(l) 
           disp(w)
       end
end

person user3636220    schedule 14.05.2014    source источник
comment
ваш вопрос не ясен. Не могли бы вы уточнить?   -  person Thanushan    schedule 14.05.2014
comment
Пожалуйста, @user3636220, постарайтесь более четко объяснить, с чем вам нужна помощь.   -  person Sergio Haram    schedule 14.05.2014
comment
Не понимая вашего фактического вопроса, заголовок предполагает, что этот вопрос может помочь.   -  person thewaywewalk    schedule 14.05.2014


Ответы (1)


Не уверен, что вы хотите сделать, но я думаю, что ваш код можно было бы поставить следующим образом:

a = 10;
l = 0:a; %// actually, it would suffice to check numbers up to floor(a/2)
ind = rem(a,l)==0; %// logical index that tells if remainder is zero or not
disp([l(ind); a./l(ind)])

Результат:

     1     2     5    10
    10     5     2     1

Вы можете сделать это более непосредственно с помощью функции Matlab factor:

f = factor(a);
disp([f; a./f])

Результат:

     2     5
     5     2
person Luis Mendo    schedule 14.05.2014
comment
Функция factor кажется подходящей. Если есть интерес только к ограниченному набору значений, вывод может быть впоследствии уменьшен. Проверьте help union. - person Dennis Jaheruddin; 14.05.2014