2016-04-14 3 views
-2
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, а некоторые другие цифры не являются первичными.Попытка узнать, введен ли введенный номер пользователем java

+2

Извините, вопросы, связанные с дампом кода и «пожалуйста, отлаживайте мой код для меня», считаются вне темы. Вы должны начать, перейдя через код по одной строке за раз в своем отладчике IDE. Вероятно, вы найдете проблему очень быстро. Если вы этого не сделаете, укажите линию, в которой поведение программы не соответствует вашему ожиданию, и задайте вопрос об этой ситуации. –

+0

Возможный дубликат [Найти простое число?] (Http://stackoverflow.com/questions/1583413/find-a-prime-number) –

ответ

-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; 
} 

Надеется, что это помогает.

+0

И проголосовать за ....? – DevilsHnd

+0

Я не спускал вниз. Я не знаю, кто это сделал. Спасибо за помощь. – Castaray

+0

Castaray, есть более эффективные версии 'isPrime()', чем это. Я подозреваю, что DevilsHnd хочет, чтобы вы научились и изучали эти более эффективные методы для себя. Подсказка: сколько даже простых чисел? – rossum

Смежные вопросы