我对问题有疑问。我是初学者,所以感谢你的帮助! 代码应该询问两个用户输入数字,并在控制台中打印出这两个之间的所有素数。 这是我到目前为止所获得的代码:(它不会检查这两个代码之间的数字,如果它是一个素数,则只打印出一个数字。)
package questionsAndAnswers;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Number {
static boolean primes;
public static boolean number( ) {
try {
for (int i = 0; i < 2; i++) {
BufferedReader br = new BufferedReader(new InputStreamReader System.in));
String num1 = br.readLine();
String num2 = br.readLine();
int number1 = Integer.parseInt(num1);
int number2 = Integer.parseInt(num2);
for (int j = number1; j < number2; j++) {
if ( (j % 2) == 0 ) return true;
for (int k = 3; (k*k) <= j; k+=2) {
if(j % k == 0) {
return false;
}
System.out.println("All the primes b/n number " + number1 + " and number" + number2 + " are :" + j );
return true;
}
System.out.println(primes);
// br.close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return primes;
}
}
......在主要课程中:
public class TwoWholeNumbers {
public static void main(String[] args) {
System.out.println("Enter two integer numbers to see what is the multitude b/w them: ");
Number.number();
}
}
答案 0 :(得分:1)
您可以从某个地方复制粘贴的代码。问题是你在第一个价值后破产了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Number {
static boolean primes;
public static boolean number() {
try {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < 2; i++) {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String num1 = br.readLine();
String num2 = br.readLine();
int number1 = Integer.parseInt(num1);
int number2 = Integer.parseInt(num2);
for (int j = number1; j < number2; j++) {
if ( (j % 2) == 0 ) {
continue;
}
int x=0;
for (int k = 3; (k*k) <= j; k+=2) {
if(j % k == 0) {
x=1;
break;
}
}
if(x==1) continue;
buffer.append(j + " ");
}
System.out.println("All the primes b/n number "
+ number1 + " and number" + number2 + " are :"
+ buffer.toString() );
}
} catch (IOException e) {
e.printStackTrace();
}
return primes;
}
public static void main(String[] args) {
System.out.println("Enter two integer numbers to see what "
+ "is the multitude b/w them: ");
Number.number();
}
}
答案 1 :(得分:0)
我检查数字是否为素数的最快方法:
boolean isPrime(int p) {
int m = (int) Math.sqrt(p);
if(m<2) {
return true;
}else {
for(int i = 2;i++;i<=m) {
if((p % i)==0) {
return false;
}
}
}
return true;
}
答案 2 :(得分:0)
您已使用return
方法而不是number()
和break
提供了continue
。 number()
中的main()
方法不会在每次迭代时需要返回的boolean
中调用。 for (int j = number1; j < number2; j++) {
if ((j % 2) == 0)
continue; // return true replaced by continue
for (int k = 3; (k * k) <= j; k += 2) {
if (j % k == 0) {
break; // return false replaced by break
}
System.out.println("All the primes b/n number "
+ number1 + " and number" + number2 + " are :"
+ j);
}
}
返回也没有意义。
我将向您展示您需要做的一些更改,这将使程序打印出几个数字。但这并不意味着它的输出正确。素数的逻辑是非常错误的。你必须解决这个问题。我只是帮你解决为什么你没有得到任何输出的基本问题。
break
我已经continue
和return
来避免{{1}}语句,但实际上,逻辑确实需要改造。