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

求指导:如何仅用while循环实现2到n之间的质数查找

用While循环实现2到n之间的质数查找

需求:找出2到用户输入的整数n之间的所有质数,且只能使用while循环,不能使用for循环。以下是原有的for循环实现代码:

import java.util.Scanner;
class Main {
    public static void main(String [] args) {
        int i;
        int cont;
        int n;
        System.out.print("Enter a number: ");
        Scanner leia = new Scanner(System.in);
        n = leia.nextInt();
        System.out.println("The prime numbers from 2 to "+n+" are: ");
        for(int j = 2; j <= n; j++) {
        cont = 0;
            for(i = 1;i <= j; i++) {
               if(j % i == 0) {
                    cont++;
               }
            } if(cont == 2) {
                   System.out.print(j+"  ");
                }
        }
    }
}

转换后的While循环实现代码

把原代码中的两层for循环替换为while循环即可,核心逻辑完全一致:

import java.util.Scanner;
class Main {
    public static void main(String [] args) {
        int i;
        int cont;
        int n;
        int j = 2; // 初始化外层循环变量
        System.out.print("请输入一个整数:");
        Scanner leia = new Scanner(System.in);
        n = leia.nextInt();
        System.out.println("2到" + n + "之间的质数是:");
        
        // 外层遍历2到n的数,替换原for循环
        while (j <= n) {
            cont = 0;
            i = 1; // 每次检查新数时重置内层循环变量
            // 内层遍历当前数的所有可能因数,替换原for循环
            while (i <= j) {
                if (j % i == 0) {
                    cont++;
                }
                i++; // 内层循环自增
            }
            // 判断是否为质数(因数只有1和自身)
            if (cont == 2) {
                System.out.print(j + "  ");
            }
            j++; // 外层循环自增
        }
    }
}

转换说明

  • 原外层for(int j=2; j<=n; j++)拆分为:初始化j=2,while(j<=n)循环体,循环末尾执行j++
  • 原内层for(i=1; i<=j; i++)拆分为:每次外层循环时初始化i=1,while(i<=j)循环体,循环末尾执行i++
  • 质数判断逻辑不变:统计当前数的因数个数,若恰好为2(1和自身),则判定为质数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:05:22