两个解析用户号码之间的所有素数

时间:2014-01-31 08:28:35

标签: java numbers primes

我对问题有疑问。我是初学者,所以感谢你的帮助! 代码应该询问两个用户输入数字,并在控制台中打印出这两个之间的所有素数。 这是我到目前为止所获得的代码:(它不会检查这两个代码之间的数字,如果它是一个素数,则只打印出一个数字。)

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();

    }
}

3 个答案:

答案 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提供了continuenumber()中的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

我已经continuereturn来避免{{1}}语句,但实际上,逻辑确实需要改造。