有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java素数检查未按预期工作

我已经写了检查素数的代码,但是它没有给我正确的输出

 int flag;
    Scanner s = new Scanner (System.in);
    System.out.println("enter upper nd lower bound");
    int lower = s.nextInt();
    int upper = s.nextInt();
    int i=0;
    int j=0;
    for (  i =lower ; i<=upper ;i++){
        if(i==1){
        continue;
        }
    }
        flag =1;
         for (  j = 2 ; j<=i/2 ; j++) {
            if(i%j==0)
                flag = 0;
                break;
        }
    if(flag == 1){
        System.out.println(i);
    }

我的输入是110 它给我看了11个


共 (2) 个答案

  1. # 1 楼答案

    代码的主要问题是,第二个for loop应该嵌套在第一个for loop中。正因为如此,第二个for loop中的代码得到了i=11。当我们把第二个for loop放在嵌套的for loop中时,将根据条件有不同的i

            Boolean flag;
            Scanner s = new Scanner (System.in);
            System.out.println("enter upper nd lower bound");
            int lower = s.nextInt();
            int upper = s.nextInt();
            int i=0;
            int j=0;
            for (  i =lower ; i<=upper ;i++){
                if(i==1){
                continue;
                }
            flag =true;
                 for (  j = 2 ; j<=i/2 ; j++) {
                    if(i%j==0)
                        flag =false;
                        break;
                }
            if(flag){
                System.out.println(i);
            }
    }
    
  2. # 2 楼答案

    /* package whatever; // don't place package name! */
    
    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    /* Name of the class has to be "Main" only if the class is public. */
    class Ideone
    {
        public static void main (String[] args) throws java.lang.Exception
        {
            Boolean flag;
            Scanner s = new Scanner(System.in);
            System.out.println("Enter upper and lower bound");
            int lower = s.nextInt();
            int upper = s.nextInt();
            for (int i = lower; i <= upper ;i++){
                flag = true;
                if(i <= 1){
                    continue;
                }
                flag = true;
                for (int j = 2 ; j<=i/2 ; j++) {
                    if(i % j==0) {
                        flag = false;
                        break;
                    }
                }
                if(flag){
                    System.out.println(i);
                }
            }
        }
    }
    

    https://ideone.com/iwVrro