MICROSOFT

EP05. “Prime Number Checker 质数检查器”

首页 Microsoft 工具 Excel · VBA · If Then Statement · EP05
约 4 分钟· #EP05#Excel#If Then Statement
🔒 登录后可标记已读
  • 这篇用 For 循环加 Mod 运算符写一个判断质数的小程序
  • 质数的定义是「只有 1 和它本身两个因数」的数字,比如 2、3、5、7 都是质数,8 不是(因数有 1、2、4、8 共四个)
  • 前置知识:EP04 的 Mod 运算符和基本的 For 循环
  • 学完能理解怎么用循环枚举因数来验证一个数学性质

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整 VBA 代码

Dim divisors As Integer, number As Long, i As Long

divisors = 0
number = InputBox("Enter a number")

For i = 1 To number
    If number Mod i = 0 Then
        divisors = divisors + 1
    End If
Next i

If divisors = 2 Then
    MsgBox number & " is a prime number"
Else
    MsgBox number & " is not a prime number"
End If

代码说明

  1. 声明 divisors(因数个数计数器,Integer)、number(要检查的数字)、i(循环变量),numberiLong(长整数)是因为要检查的数字可能很大,Integer 容易溢出
  2. divisors 初始化为 0,用 InputBox 弹出输入框让使用者输入要检查的数字
  3. For i = 1 To number 从 1 一路循环到 number 本身
  4. 每次循环用 number Mod i = 0 判断 i 是不是 number 的因数(余数为 0 表示能整除),能整除就把 divisors 加 1
  5. Next i 结束循环
  6. 循环跑完后,如果因数总数正好是 2(只有 1 和它本身),弹窗显示是质数,否则显示不是质数

运行示例

弹窗输入 104729,跑完程序会弹窗显示 "104729 is a prime number"。


怎么运行

Alt + F11 打开 VBA 编辑器,把代码放进模块或按钮点击事件,按 F5 或点命令按钮执行,会先弹出输入框,输入数字后再弹出结果框。


学完你会

  • ✅ 会用 For 循环枚举一个数字的所有因数
  • ✅ 会用因数个数是不是等于 2 来判断质数
  • ✅ 懂得用 Long 而不是 Integer 声明可能很大的数字,避免溢出

常见错误

  • numberi 声明成 Integer 而不是 Long——Integer 最大只能存到 32767,检查大一点的数字会直接溢出报错
  • 数字越大,循环次数越多(因为是从 1 一路数到 number 本身),检查很大的数字时程序会明显变慢,这是这个写法效率上的取舍,不是 bug
  • 忘记 1 本身不是质数(只有 1 个因数),这个程序对 1 会正确判断成「不是质数」,但如果自己改写逻辑要注意这个边界情况

Sources

Blog / Website:

  1. Prime Number Checker