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

VBA素数检测代码修改求助:需仅输出数值的素约数

VBA素约数输出修改方案

代码运行参考图

修改思路很简单,新增一个素数判断辅助函数,对原有逻辑找到的约数增加素数校验即可,修改后的完整代码如下:

' 素数判断辅助函数
Function IsPrime(num As Integer) As Boolean
    If num < 2 Then
        IsPrime = False
        Exit Function
    End If
    Dim m As Integer
    For m = 2 To Sqr(num)
        If num Mod m = 0 Then
            IsPrime = False
            Exit Function
        End If
    Next m
    IsPrime = True
End Function

Private Sub CommandButton1_Click()
    Dim i As Integer, divisors As Integer, number As Integer, j As Integer, k As Integer, q As Integer

    For i = 2 To Range("A1").CurrentRegion.Rows.Count
        number = Cells(i, 1).Value
        divisors = 0
        k = 3
      
        For j = 1 To number
            q = number Mod j
            If q = 0 Then
                divisors = divisors + 1
                ' 仅输出符合条件的素约数
                If j <> 1 And j <> number And IsPrime(j) Then
                    Cells(i, k) = j
                    k = k + 1
                End If
            End If
        Next j
        
        If divisors = 2 Then
            Cells(i, 2).Value = "This is a prime number"
            Cells(i, 2).Interior.Color = vbRed
        Else
            Cells(i, 2).Value = "Divisors of " & Cells(i, 1).Value
        End If
        Columns("B").AutoFit
    Next i
End Sub

修改说明:

  • 新增的IsPrime函数可直接复用,校验逻辑做了优化,仅遍历到数值的平方根就可以完成素数判断,运算效率更高
  • 原有逻辑仅新增了And IsPrime(j)的判断条件,其余素数标红、提示文本、列宽自适应等功能完全保留,和原有使用习惯一致
  • 如果需要处理超过32767的大数值,可以把代码里的Integer类型替换为Long避免溢出报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:45:04