Java 嵌套循环素检查器

Java 嵌套循环素检查器,java,for-loop,nested,primes,Java,For Loop,Nested,Primes,这是我的代码,我对任何编程方式都有点陌生。程序的目标是输出0和用户输入值之间的所有素数,每一个都在自己的行上 import java.util.Scanner; import java.math.*; public class Sforprime{ public static void main (String[] args){ double box = 0; double boxxx = 0; int po = 0; int blub = 0;

这是我的代码,我对任何编程方式都有点陌生。程序的目标是输出0和用户输入值之间的所有素数,每一个都在自己的行上

import java.util.Scanner;
import java.math.*;

public class Sforprime{

  public static void main (String[] args){
    double box = 0;
    double boxxx = 0;
    int po = 0;
    int blub = 0;
    int no = 1;
    Scanner scan = new Scanner (System.in);
    System.out.println("input cieling number");
    box = scan.nextInt();
    boxxx = Math.sqrt(box);
    for (int batman = (int)box; batman >= 0; batman--){
      if (no == 1){
        no = 0;
      }
      else if (po == 0){
        System.out.println(blub);
        po = 0;
      }
      blub = batman;

      for (int mot = (int)boxxx; mot >= 2; mot--){
        if (po == 1 ){
        }
        else if (box%mot == 0){
          po++;
        }  
      }
      if (po == 0){
        System.out.println(blub);
      }
    }
  }
}

结果是,在你输入数字后,它什么也没做。我做错了什么

您可以使用以下逻辑:

        int n,p;
        Scanner s=new Scanner(System.in);
        System.out.println(“Enter required number upto which prime numbers are needed: ”);
        n=s.nextInt();
        for(int i=2;i<n;i++)
        {
            p=0;
            for(int j=2;j<i;j++)
            {
                if(i%j==0)
                p=1;
            }
            if(p==0)
                System.out.println(i);
        }
intn,p;
扫描仪s=新的扫描仪(System.in);
System.out.println(“输入需要的素数:”);
n=s.nextInt();

对于(int i=2;i,因为您已初始化int mot=(int)boxxx 框%mot将为0,po将始终递增为1,因此永远不会打印。初始化mot=boxxx-1。但建议您使用上述程序,因为它更干净。

他们想知道-“我在这里做错了什么?”这是否回答了这个问题?