根据java中输入的范围显示所有素数

根据java中输入的范围显示所有素数,java,Java,我正在尝试解决一个示例练习,它根据输入的范围显示素数。例如,如果我输入10,它应该输出2 3 5 7 11 13 17 19 23 29 这是我的密码: System.out.print("Enter Range: "); int range = input.nextInt(); int r = 0; for(int ctr1 = 2; ctr1 <= range; ctr1++){ for(int ctr2 = 1; ctr2 <= ctr1; ctr2++){

我正在尝试解决一个示例练习,它根据输入的范围显示素数。例如,如果我输入10,它应该输出
2 3 5 7 11 13 17 19 23 29

这是我的密码:

System.out.print("Enter Range: ");
int range = input.nextInt();

int r = 0;
for(int ctr1 = 2; ctr1 <= range; ctr1++){
    for(int ctr2 =  1; ctr2 <= ctr1; ctr2++){
        if(ctr1%ctr2 == 0){
          r++;      
        }
    }
    if(r == 2){
        System.out.println(ctr1);
    }
}
System.out.print(“输入范围:”);
int range=input.nextInt();
int r=0;

对于(int-ctr1=2;ctr1,在这种情况下使用嵌套循环可能会使事情更加复杂。我建议您将解决方案分为两个步骤:

  • 创建一个函数来创建

    private静态布尔值isPrime(int n){
    //检查n是否为2的倍数
    如果(n%2==0)返回false;
    //如果没有,那就检查一下赔率
    
    对于(int i=3;i*i我不理解您的代码。请尝试给出合理的参数名称。无论如何,这就是您要查找的代码

    public static void main(String args[]) {
    
        //get input till which prime number to be printed
        System.out.println("Enter the amount of prime numbers to be printed: ");
        int limit = new Scanner(System.in).nextInt();
        int count=1;
    
        //printing primer numbers till the limit ( 1 to 100)
        System.out.println("Printing prime number from 1 to " + limit);
        for(int number = 2; count<=limit; number++){
            //print prime numbers only
            if(isPrime(number)){
                System.out.println(number);
                count++; 
            }
        }
    
    }
    
    /*
     * Prime number is not divisible by any number other than 1 and itself
     * @return true if number is prime
     */
    public static boolean isPrime(int number){
        for(int i=2; i<number; i++){
            if(number%i == 0){
                return false; //number is divisible so its not prime
            }
        }
        return true; //number is prime now
    }
    
    publicstaticvoidmain(字符串参数[]){
    //获取要打印的素数之前的输入
    System.out.println(“输入要打印的素数的数量:”);
    int limit=新扫描仪(System.in).nextInt();
    整数计数=1;
    //打印底漆编号至极限(1至100)
    System.out.println(“打印从1到“+限制的素数”);
    对于(整数=2;计数一个以上的解决方案)

    公共静态布尔校验素数(int i){
    
    如果(i)是学习调试的时间!请在将
    r
    重置为0时再次检查。打印2后是否会发生这种情况?此外,您的代码只会得到小于范围的素数。
    System.out.print("Enter Range: ");
    int range = input.nextInt();
    
    int count = 0;
    
    for (int number = 2; count < range; number++) {
        if (isPrime(number)) {
            count++;
            System.out.println(number);
        }
    }
    
    public static void main(String args[]) {
    
        //get input till which prime number to be printed
        System.out.println("Enter the amount of prime numbers to be printed: ");
        int limit = new Scanner(System.in).nextInt();
        int count=1;
    
        //printing primer numbers till the limit ( 1 to 100)
        System.out.println("Printing prime number from 1 to " + limit);
        for(int number = 2; count<=limit; number++){
            //print prime numbers only
            if(isPrime(number)){
                System.out.println(number);
                count++; 
            }
        }
    
    }
    
    /*
     * Prime number is not divisible by any number other than 1 and itself
     * @return true if number is prime
     */
    public static boolean isPrime(int number){
        for(int i=2; i<number; i++){
            if(number%i == 0){
                return false; //number is divisible so its not prime
            }
        }
        return true; //number is prime now
    }
    
    public static boolean checkPrime(int i) {
        if (i <= 1)
          return false;
        else if (i <= 3)
          return true;
        else if (i % 2 == 0 || i % 3 == 0)
          return false;
        int n = 5;
        while (n * n <= i) {
          if (i % n == 0 || i % (n + 2) == 0)
            return false;
          n = n + 6;
        }
        return true;
      }
    
    
    
    public static void main(String[] args) throws Exception {
        int isPrime = 0;
        int counter = 0;
        int size = 10;
        while (isPrime < size) {
          counter++;
          if (checkPrime(counter)) {
            isPrime++;
            System.out.println(counter);
          }
        }
      }