问题是: 编写一个Java程序以打印间隔[a,b](包括a和b,包括两者)中的所有素数。
条件是:
输入1应当小于输入2。两个输入都应为正。
范围必须始终大于零。
我想到了这样的代码:
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);
}
}
}
我针对测试用例进行了测试。一个隐藏的测试用例只是提示“检查相等范围” 我不确定那是什么意思。有人可以帮我吗?
答案 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);
}
}
}