阵列元素的独特产品

问题描述 投票:1回答:1

我有一个数组,例如[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
matlab cartesian-product
1个回答
2
投票

魔术函数是nchooseknchoosek(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
© www.soinside.com 2019 - 2024. All rights reserved.