2016-04-14 5 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); 

} 

Ich brauche Hilfe bei dem Versuch, an den Benutzer auszugeben, dass die Nummer, die sie eingegeben haben, prime ist. Bis jetzt funktioniert dieses Beispiel nur für einige Zahlen. Das Programm denkt, 14 ist Primzahl, 12 ist Primzahl, 25 ist Primzahl, 35 ist Primzahl, 36 ist Primzahl, 39 ist Primzahl und 34 ist Primzahl. Es bekommt jedoch einige Zahlen richtig. Es kennt 8, 10, 12,18 und einige andere Zahlen sind nicht prim.Versucht zu sehen, ob die eingegebene Nummer in Java ist

+2

Entschuldigen Sie, dass Fragen, die aus einem Code-Dump und "Debuggen Sie meinen Code für mich" bestehen, nicht als Thema angesehen werden. Sie sollten den Code Schritt für Schritt in Ihrem IDE-Debugger durchlaufen. Sie werden das Problem wahrscheinlich sehr schnell finden. Wenn Sie dies nicht tun, identifizieren Sie die Zeile, in der das Verhalten des Programms nicht Ihren Erwartungen entspricht, und stellen Sie eine Frage zu dieser Situation. –

+0

Mögliches Duplikat von [Eine Primzahl finden?] (Http://stackoverflow.com/questions/1583413/find-a-prime-number) –

Antwort

-1

ist hier ein wenig Methode, die Sie entlang helfen:

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

Hoffnung.

+0

Und die Abstimmung ist für ....? – DevilsHnd

+0

Ich habe nicht downvote. Ich weiß nicht, wer es getan hat. Danke für die Hilfe. – Castaray

+0

Castaray, es gibt effizientere Versionen von 'isPrime()' als dies. Ich vermute, dass DevilsHnd möchte, dass Sie mehr lernen und diese effizienteren Methoden für sich selbst erforschen. Tipp: Wie viele Primzahlen gibt es? – rossum

Verwandte Themen