Java 我试图从用户那里找到从0到给定数字的素数

Java 我试图从用户那里找到从0到给定数字的素数,java,Java,我的代码不起作用,我不知道为什么或者如何使它起作用。这是我的密码 public static void ex5(){ Scanner scan = new Scanner(System.in); int givenNr = scan.nextInt(); int m = 1; for (int i = 2; i < givenNr; i++){ while (m <= i/2 ){ i

我的代码不起作用,我不知道为什么或者如何使它起作用。这是我的密码

public static void ex5(){
    Scanner scan = new Scanner(System.in);
    int givenNr = scan.nextInt();
    int m = 1;
        for (int i = 2; i < givenNr; i++){
             while (m <= i/2 ){
                 if(i % m != 0) {
                     System.out.print(i + " ");
                 }
                 m++;
             }
            }
            }
publicstaticvoid ex5(){
扫描仪扫描=新扫描仪(System.in);
int givenNr=scan.nextInt();
int m=1;
for(int i=2;ipublicstaticvoidex5(){
扫描仪扫描=新扫描仪(System.in);
int givenNr=scan.nextInt();
for(int i=2;i对于(inti=2;i)这个逻辑不起作用。即使你把m=1放进去,基本上你在这里检查的是,如果一个给定的数字不能被任何小于它的一半的数整除,这是素数的定义,这是错误的。你能解释一下代码的过程是什么吗。首先检查基本情况,根据根据这个逻辑,它不会是素数,因为1除以2。从那里构建itut。我会尝试并仔细考虑。谢谢你需要查找埃拉托斯德语的筛子。目前你要打印的只是非素数。我刚才做了,谢谢你的建议谢谢你的示例糟糕的想法。你不应该调用
isPrime()
循环中的方法。@那么如何检查数字是否为素数?。请告诉我,这样我可以了解更多。我已经使用了最简单的代码来检查数字是否为素数。
public static void ex5() {
    Scanner scan = new Scanner(System.in);
    int givenNr = scan.nextInt();
    for (int i = 2; i < givenNr; i++) {
        if (isPrime(i))
            System.out.println(i);
    }
}

public static boolean isPrime(int n) {
    for (int i = 2; i <= Math.sqrt(n); i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}