Уникальные продукты элементов массива - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть массив, например [3 5 7 11].Я хочу узнать уникальные кратные этих элементов, то есть

  1. произведение парных элементов - 15, 21, 33, 35, 55, 77

  2. произведение трех элементов - 105, 385, 231

  3. произведение четырех элементов - 1055.

В данный момент я запуталсяо том, как сделать это эффективным способом, чтобы при расширении его на большее количество элементов в массиве я не взрывал память и не убивал свой компьютер.

Мой текущий код:

prime_factor=[3 5 7 11]; 
for i=1:length(prime_factor) 
    pfm=unique([pfm cumprod(circshift(prime_factor,i,2))]) 
endfor

1 Ответ

0 голосов
/ 20 февраля 2019

Магическая функция: nchoosek, nchoosek(v,k) создает все комбинации k элементов из входного вектора v.Просто вычислите произведение по строкам вывода, чтобы получить желаемый результат:

v = [3 5 7 11];
prod(nchoosek(v,2),2)

выход:

ans =
    15
    21
    33
    35
    55
    77
prod(nchoosek(V,3),2)

выход:

ans =
   105
   165
   231
   385
prod(nchoosek(V,4),2)

выход:

ans =
        1155
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...