试图查看用户输入的数字是否是java中的主要数字

时间:2016-04-14 02:13:32

标签: java primes

public static void main(String[] args) {
  Scanner scan = new Scanner(System.in);
    int N = 0;
    do {
        System.out.println("How long should we search for primes? Until N=: ");
        N = scan.nextInt();
    } while (N <= 2); // gets the amount of prime numbers there are that go up to that number 
    //example, if user enters 20, the output will be that there are 8 prime numbers 

    boolean[] prime = new boolean[N +2];
    for (int i = 2; i <= N; i++) {
        prime[i] = true; //makes all values in the array true 
    }
    for (int i = 2; i * i <= N; i++) {
        if (prime[i]) {
            for (int z = i; z * i <= N; z++) {
                prime[i * z] = false; // makes the non prime numbers in the array false 
                int newCheck = 0;
                do {
                    System.out.println("Enter a number to see if it is prime");
                    int go = 0;
                    newCheck = scan.nextInt(); //here's where i need help 
                    } while (newCheck <= 1 || newCheck > N);
                    if(prime[newCheck]){ // if the number entered is true in the array, it is prime
                        System.out.println("It is prime");
                        int mPrime=(int)((Math.log(newCheck))/(Math.log(2)))-1;
                      if (prime[mPrime]){//ignore this, its for another part i need to do
                          System.out.println(""+newCheck+ "is a merseinne prime number! It equals 2^"+mPrime+ " -1");
                    }  
                    }

                    else if (prime[newCheck]==prime[i*z]){ //if the number is equal to false in the array,
                        //it is not prime 
                        System.out.println("It is not prime");
                    }
                    if(newCheck==0){
                        break;
                    }

            }
        }
    }
    int counterPrime = 0;
    for (int i = 2; i <= N; i++) {
        if (prime[i]) {
            counterPrime++;
        }
    }

    System.out.println("The number of primes less than or equal to " + N + " is " + counterPrime);

}

我需要帮助尝试向用户输出他们输入的数字是素数。到目前为止,这个例子仅适用于某些数字。程序认为14是素数,12是素数,25是素数,35是素数,36是素数,39是素数,34是素数。 虽然它有一些数字。它知道8,10,12,18和其他一些数字不是素数。

1 个答案:

答案 0 :(得分:-1)

这是一个可以帮助你的方法:

public static boolean isPrime(final int number) {
    int temp;
    boolean isPrim = true;
    for(int i=2; i <= number / 2; i++) { 
            temp = number%i;
        if(temp==0) { isPrim = false; break; }
    }
    return isPrim;
}

希望这有帮助。