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

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

img

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

img

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

img

所以是什么原因导致的?

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);
            }
        }

这是上图代码

没看出来有什么问题,跑了一遍代码,能正常运行