给定范围内的Java字符串中的质数列表

时间:2020-03-24 12:20:37

标签: java

问题是: 编写一个Java程序以打印间隔[a,b](包括a和b,包括两者)中的所有素数。

条件是:

  • 输入1应当小于输入2。两个输入都应为正。

  • 范围必须始终大于零。

  • 如果上述任何条件失败,则显示“提供有效输入”
  • 至少要使用一个for循环和一个while循环。

我想到了这样的代码:

import java.util.Scanner;

class PrimeNumbers{
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = Integer.parseInt(sc.nextLine());
        int b = Integer.parseInt(sc.nextLine());

        if((a > b) || a <= 0 || b <= 0){
            System.out.println("Provide valid input");
        }
        else{
            int i = 0, num = 0;
            String prime = "";

            for(i = a;i <= b;i++){
                int counter = 0;
                num = i;
                while(num >= 1){
                    if(i % num == 0)
                        counter++;
                    num--;
                }
                if(counter == 2)
                    prime = prime + i + " ";
            }

            System.out.println(prime);
        }
    }
}

我针对测试用例进行了测试。一个隐藏的测试用例只是提示“检查相等范围” 我不确定那是什么意思。有人可以帮我吗?

1 个答案:

答案 0 :(得分:-3)

package monu;
import java.util.Scanner;

public class Test {

    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = Integer.parseInt(sc.nextLine());
        int b = Integer.parseInt(sc.nextLine());
        int c = b - a;
        if(a > b || c < 0 || a < 0|| b <= 0) {
            System.out.println("Provide valid input");
        }
        else{
            int i = 0, num = 0;
            String prime = "";

            for(i = a; i <= b; i++){
                int counter = 0;
                num = i;
                while (num >= 1) {
                    if (i % num == 0)
                        counter++;
                    num--;
                }
                if (counter == 2)
                    prime = prime + i + " ";
            }

            System.out.println(prime);
        }
    }
}