wxMaxima如何实现返回整数所有因数的列表功能
wxMaxima 获取整数所有因数列表的实现方案
方案1:调用内置函数(优先选择)
绝大多数wxMaxima版本已内置该功能,直接调用divisors()函数即可,使用示例:
divisors(6);
返回结果:[1, 2, 3, 6]
如果你运行上述代码提示函数未定义,再使用下方自定义函数方案。
方案2:自定义函数实现
你可以通过组合内置素因子分解能力,自己封装list_factors函数,代码如下:
list_factors(n) := block( [prime_facs:ifactors(n), result:[1]], /* 处理n=1的特殊情况 */ if n = 1 then return([1]), /* 遍历每个素因子及其指数,扩展因数列表 */ for fac_pair in prime_facs do ( p:fac_pair[1], exp:fac_pair[2], result:apply(append, map(lambda(r, makelist(r * p^k, k, 0, exp)), result) ) ), /* 对结果排序后返回 */ sort(result) )$
自定义函数测试示例
- 输入
list_factors(12);返回[1, 2, 3, 4, 6, 12] - 输入
list_factors(18);返回[1, 2, 3, 6, 9, 18] - 输入
list_factors(1);返回[1]
内容的提问来源于stack exchange,提问作者Rax Adaam
相关产品推荐
相关产品推荐

