You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:40:01