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

Excel中VBA质数判断函数IsPrimeTrialDivision始终返回FALSE的原因

问题原因与修复方案

你的代码核心问题是函数名称和返回值赋值的名称不匹配:

  • 你定义的函数名是IsPrimeTrialDivision,但函数内部所有返回结果的地方都用了IsPrime来赋值
  • VBA中布尔型函数默认返回False,如果没有正确给函数本身的名称赋值,就会一直返回默认的False

修复后的代码如下:

Function IsPrimeTrialDivision(number As Long) As Boolean
    Dim i As Long

    If number <= 1 Then
        IsPrimeTrialDivision = False
        Exit Function
    End If

    ' 把Sqr的结果转成Long,避免浮点类型导致循环范围异常
    For i = 2 To CLng(Sqr(number))
        If number Mod i = 0 Then
            IsPrimeTrialDivision = False
            Exit Function
        End If
    Next i

    IsPrimeTrialDivision = True
End Function

额外补充:

  • 原代码中Sqr(number)返回的是Double类型,直接用在Long类型的循环变量里,可能会因为浮点精度问题导致循环范围不准确,加上CLng()转换更稳妥
  • 测试时可以用=IsPrimeTrialDivision(7)这类单元格公式验证,应该会返回True

内容的提问来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:13:11