慈爱的勇者 2021-07-05 13:06 采纳率: 0%
浏览 13

这是一个输出前50个素数的程序,写成这样为什么只能输出前两个

用的版本是最新的Eclipse IDE for Java Developers - 2021-06
img
代码运行后程序不会停止,当我把n在进行下一次while循环前输出后,就变成了这样

img

但是我用for代替while循环以后,并做了一些调整又可以正常输出了,
img
但是当我把prime这个变量放到循环外的时候,又不正常了

img

我以为是prime的问题,我又用了之前的代码并把prime放进循环里发现输出还是不对

img

所以是什么原因导致的?

  • 写回答

2条回答 默认 最新

  • 慈爱的勇者 2021-07-05 13:08
    关注
    int n = 2;
            int count = 0;
            while(true) {
                int prime = 1;
                for( int i = 2;i < n; i++) {
                    if ((n % i) == 0) {
                        prime = 0;
                        break;
                    }
                }
                if (prime == 1) {
                    count++;
                    System.out.println("第"+count+"个素数:"+n );
                }
                n++;
            }
    
    int n = 2;
            for(int count = 0;count<50;n++) {
                int prime = 1;
                for( int i = 2;i < n; i++) {
                    if ((n % i) == 0) {
                        prime = 0;
                        break;
                    }
                }
                if (prime == 1) {
                    count++;
                    System.out.println("第"+count+"个素数:"+n);
                }
            }
    

    这是上图代码

    评论

报告相同问题?