Google Sheets自定义函数MODINVERSE无法处理数组输入求助
让Google Sheets的MODINVERSE函数支持数组输入
要让你的MODINVERSE函数支持数组输入(比如MODINVERSE(A1:A3, X)),需要添加数组判断与遍历逻辑,同时保留原有的模逆元计算逻辑。以下是修改后的实现:
function MODINVERSE(multiplier, modifier) { var output = []; // 将单个乘数转为二维数组,统一处理逻辑 const multipliers = Array.isArray(multiplier) ? multiplier : [[multiplier]]; // 遍历每个乘数元素 for (const row of multipliers) { const rowOutput = []; for (const num of row) { let result = 0; if (modifier > 1 && num !== 0) { // 查找模逆元,找到后立即终止循环 for (let X = 1; X < modifier; X++) { if (((num % modifier) * (X % modifier)) % modifier === 1) { result = X; break; } } } rowOutput.push(result); } output.push(rowOutput); } return output; }
关键修改说明
- 统一输入处理:用
Array.isArray判断输入的乘数是否为数组,单个值自动包装成二维数组,确保后续遍历逻辑一致,同时符合Google Sheets自定义函数返回数组的格式要求(二维数组对应单元格区域)。 - 数组遍历计算:通过双层循环处理输入数组的每一行和每个元素,逐个计算对应的模逆元,结果按原数组结构返回。
- 优化循环效率:找到第一个符合条件的模逆元后立即终止内层循环,减少不必要的计算。
- 兼容原有逻辑:保留了原函数中modifier≤1、乘数为0时返回0的判断,确保单个值输入的行为和之前一致。
内容的提问来源于stack exchange,提问作者Collin Dehmer
相关产品推荐
相关产品推荐

