如何在LabVIEW中使用Case结构查找用户输入值以下的质数
用Case结构实现LabVIEW质数查找程序
核心逻辑梳理
质数的判断标准很明确:大于1的数,除了1和自身外没有其他因数。用Case结构的核心思路,就是在检查因数的过程中,根据余数是否为0来分支处理——一旦找到能整除的数,直接判定当前数不是质数,不用再继续检查。
具体实现步骤
前期准备
- 前面板加三个控件:数值输入框(用来输入上限值)、数组显示控件(输出最终的质数列表)、布尔变量
is_prime(初始设为True,标记当前数是否为质数)。 - 程序框图里拖两个For循环、一个Case结构,还有移位寄存器(用来保存逐步收集的质数数组)。
- 前面板加三个控件:数值输入框(用来输入上限值)、数组显示控件(输出最终的质数列表)、布尔变量
外层循环:遍历所有候选数
- 外层For循环的范围设为
2到用户输入的上限值(包含上限),因为1不是质数,直接从2开始遍历。 - 每次外层循环启动时,一定要把
is_prime重置为True,不然上一次的判断结果会干扰当前数的判定。
- 外层For循环的范围设为
内层循环+Case结构:做质数判断
- 内层For循环的范围设为
2到√当前候选数(用平方根函数计算就行,能大幅减少循环次数,提高效率)。 - 计算当前候选数除以循环变量的余数,把余数结果接到Case结构的选择器上:
- Case 0(余数为0):说明当前数能被整除,直接把
is_prime设为False,再调用「停止循环」函数结束内层循环——既然已经找到因数,没必要继续检查了。 - Default Case(余数不为0):啥也不用做,让内层循环继续往下跑就行。
- Case 0(余数为0):说明当前数能被整除,直接把
- 内层For循环的范围设为
收集符合条件的质数
- 内层循环结束后,看
is_prime的值:如果是True,就把当前候选数添加到质数数组的移位寄存器里;如果是False,直接跳过这个数。
- 内层循环结束后,看
输出结果
- 外层循环跑完后,把移位寄存器里存的质数数组,输出到前面板的数组显示控件里就行。
常见问题排查
- 要是输出空数组或者漏了质数:检查外层循环的起始值是不是从2开始,还有平方根的计算有没有出错——内层循环得覆盖到足够的因数范围才行。
- 要是输出里混了非质数:看看Case结构的「Case 0」分支是不是正确把
is_prime设成了False,有没有及时停止内层循环。 - 要是循环逻辑乱套:确认移位寄存器的接线对不对,尤其是
is_prime的重置时机——必须在外层循环的每一次迭代开头就重置。
内容的提问来源于stack exchange,提问作者Kevin Paul Jacob
相关产品推荐
相关产品推荐

