excel函数技巧:【递归】寻找数字的最小质数乘积-趣帮office教程网

如图,如何寻找A列数据中的质数因子,既所有因数相乘,乘积等于数据,同时因数是质数,只能被它本身和1相除。本例用递归公式解决,公式如下:

=LET(f,LAMBDA(digui,x,IF(x=1,"",LET(a,MAX(MAP(SEQUENCE(x-1),LAMBDA(s,GCD(x,s)))),VSTACK(x/a,digui(digui,a))))),

A1&"="&TEXTJOIN("*",,f(f,A1)))

公式思路:本例 的核心是如何寻找出每个质数,主要利用GCD函数寻找这个数如1200与比这个数小的所有数:1199,1198……1,这个数列中每一个数的最大公约数,并与数字本身相除,得到一个质数,然后对这个最大公约数依次进行递归,直到找出所有的质数。

本次递归的计算核心为:MAX(MAP(SEQUENCE(x-1),LAMBDA(s,GCD(x,s)))),找出最大公约数;

递减数列:最大公约数的最大公约数

终止条件:IF(x=1,"",……,如果递归的数据为1,终止计算。