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

使用while循环打印质数未达预期,变量j未重置引发输出异常

素数输出代码的问题分析与修复

问题现象

这段代码本意是输出2到5之间的素数(预期输出2、3、5),但实际仅输出2。

问题根源

  1. 变量j未重置:j在外层循环外定义,第一次内层循环结束后j的值变为3。后续i递增到3、4、5时,j已经大于当前i,内层while循环直接终止,无法对后续数字进行因数判断。
  2. 变量count未重置:count同样在外层循环外定义,第一次统计完2的因数后count值为2,后续没有重置,导致后续数字的判断逻辑完全失效。

原代码

public static void main(String[] args) {

    int i=2;
    int j=1;
    int count=0;

    while(i<=5)
    {
        while(j<=i)
        {
            if(i%j==0)
            {
                count++;        
            }
            
            j++;
        }

        if(count==2)
            System.out.println(i);    
        
        i++;
    }
}

修复后的代码

将j和count的定义移至外层循环内部,确保每次迭代新的i时,这两个变量都被重置为初始值:

public static void main(String[] args) {

    int i=2;

    while(i<=5)
    {
        int j=1;
        int count=0;
        while(j<=i)
        {
            if(i%j==0)
            {
                count++;        
            }
            
            j++;
        }

        if(count==2)
            System.out.println(i);    
        
        i++;
    }
}

修复逻辑说明

每次检查新的数字i时,重新初始化j=1(从1开始判断因数)和count=0(重置因数计数器),内层循环正常遍历1到i的所有数字,统计因数个数。当count=2时,说明该数字只有1和自身两个因数,即为素数,执行输出操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:32:43