如图,如何寻找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,终止计算。
评论 (0)