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

在LibreOffice Calc中计算正整数因数个数的方法咨询

在LibreOffice Calc中计算正整数因数个数的方法咨询

嗨,我来给你说说怎么在LibreOffice Calc里搞定正整数因数个数的计算,刚好你说的是A列放整数、B列出结果的场景,这有两个实用的方法,你可以根据需求选:

  • 数组公式法(适合日常基础使用)
    假设要计算A1单元格里的数的因数个数,直接在B1单元格输入下面的公式,输入完成后别直接回车,要按Ctrl+Shift+Enter来确认(这是数组公式的特殊确认方式):
    =SUMPRODUCT(1*(MOD(A1,ROW(INDIRECT("1:"&A1)))=0))
    简单解释下这个公式的逻辑:

    • ROW(INDIRECT("1:"&A1))会生成从1到A1数值的整数序列
    • MOD(A1, 序列中的每个数)会算出A1除以每个数的余数,余数为0的就是A1的因数
    • 1*(...)把余数为0的布尔值转成1,其余转成0
    • SUMPRODUCT把这些1加起来,总数就是因数的个数
      如果A列有多个需要计算的数,把B1的公式往下拖,就能自动适配对应的A单元格啦。
  • 自定义宏函数(适合频繁使用或计算大数的场景)
    要是你经常需要做这个计算,或者要处理很大的正整数,数组公式可能有点卡,这时候可以自己写个宏函数:

    1. 打开Calc后按Alt+F11打开宏编辑器
    2. 在左侧的项目树里右键点击你的文档,选「插入」→「模块」
    3. 在弹出的编辑窗口里粘贴这段代码:
    Function CountFactors(n As Integer) As Integer
        Dim count As Integer
        count = 0
        For i = 1 To Sqr(n)
            If n Mod i = 0 Then
                If i = n / i Then
                    count = count + 1
                Else
                    count = count + 2
                End If
            End If
        Next i
        CountFactors = count
    End Function
    
    1. 保存宏后回到表格,在B1里输入=CountFactors(A1),回车就能得到结果,同样可以往下拖应用到其他单元格。这个方法只循环到数值的平方根,计算效率比数组公式高很多。

小提醒

  • 一定要确保A列里的是正整数,如果是小数或者负数,公式会出错。你可以给数组公式加个判断,比如改成:=IF(A1>0,SUMPRODUCT(1*(MOD(A1,ROW(INDIRECT("1:"&A1)))=0)),"请输入正整数")
  • 对于特别大的数(比如超过10^6),优先用自定义宏函数,速度会快不少。

备注:内容来源于stack exchange,提问作者user52949

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:42:59