2016-03-23 8 views
-3

Ich versuche, ein Programm zu schreiben, das prüft, ob es prime oder nicht ist, und eine Zeichenfolge zurückgibt, ja wenn true und nein wenn false. Ich versuche, es innerhalb meiner Hauptmethode zu tun, die nur while-Schleifen verwendet, aber ich habe Probleme, es auszuführen. Ich habe es innerhalb der void-Methode gemacht, und ich habe die Methode in meiner Hauptmethode aufgerufen, aber das ist nicht das, was ich will.Primzahlen mit While-Schleifen

Ich möchte, dass es innerhalb meiner Hauptmethode ist und einen String Yes zurückgibt, wenn es prim ist und ein String nein, wenn es nicht prim ist. Irgendwelche Ideen bitte? Sehen Sie sich meinen Code in der folgenden Methode an. Irgendwelche Ideen, wie man es in meine Hauptmethode umwandelt, um Ja oder Nein als Strings zurückzugeben?

import java.util.Scanner; 

public class PrimeNumbers { 
    public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 

    System.out.print("Enter a number: "); 
    int number = in .nextInt(); 

    isPrime(number); 
    } 

    public static void isPrime(int n) { 
    if (n % 2 == 0) { 
     System.out.println("It is not a prime number"); 
     return; 
    } else { 
     int i = 3; 
     while (i <= Math.sqrt(n)) { 
     if ((n % i) == 0) { 
      System.out.println("It is not a prime number"); 
      return; 
     } 
     i = i + 2; 
     } 
    } 
    System.out.println("It is a prime number"); 
    return; 

    } 

} 
+1

Wie wäre es, den Körper zu kopieren von 'isPrime()' in 'main()' wo 'isPrime (number);' ist jetzt? (Ändern Sie natürlich 'n' in' number' (oder umgekehrt).) –

+0

Sie können String nicht aus void-Methoden zurückgeben. – Naveed

+0

Ihre isPrime-Methode ist falsch. Jede ganze Zahl kleiner oder gleich 1 ist nicht prim. 2 und 3 sind Primzahlen. 4 ist nicht prim. Jede Ganzzahl 5 oder größer kann auf Prime getestet werden, wie Sie es in Ihrer while-Schleife tun. –

Antwort

0

Erhm, einfach kopieren und in Ihren main Methode Körper und verwenden boolean um zu bestimmen, welches Ergebnis aus zu drucken.

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 
    System.out.print("Enter a number: "); 
    int number = in.nextInt(); 
    boolean prime = false; 

    if (number % 2 == 0) { 
     prime = false; 
    } else { 
     int i=3; 
     while (i<=Math.sqrt(number)) { 
      if ((number % i) == 0) { 
       prime = true; 
      } 
      i+=2; 
     } 
    } 

    if (prime) { 
     System.out.println("It is a prime number"); 
    } else { 
     System.out.println("It is not a prime number"); 
    } 
} 
0

Haben Sie Ihre isPrime Methode eine boolean statt void zurückzukehren.

public static boolean isPrime(int n) { 
    if (n % 2 == 0) { 
    return false; 
    } else { 
    int i = 3; 
    while (i <= Math.sqrt(n)) { 
     if ((n % i) == 0) { 
     return false; 
     } 
     i = i + 2; 
    } 
    } 
    return true; 
} 

Und dann in main Check für

if(isPrime(2)) { 
    System.out.println("Is a prime number!"); 
} else { 
    System.out.println("It is not a prime number!"); 
} 
0

Ich bin ein wenig unsicher, was Sie wollen. Es klingt wie Sie eine Funktion erstellen möchten, die ja zurückgibt oder nein zurückgibt? Wenn dies der Fall ist, können Sie den folgenden Algorithmus erstellen:

public static String isPrime(int num){ 
    for(int i = 2; i < num; i++) { 
     if(num % i == 0) 
      return "No"; 
    } 
    return "Yes"; 
} 

Siehe here für Details, wie dieser Algorithmus zu optimieren.

Dann können Sie einfach die Methode in der Haupt nennen:

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 

    System.out.print("Enter a number: "); 
    int number = in.nextInt(); 

    System.out.println(isPrime(number)); 
} 

Wenn Sie in Ihrem Haupt wollen einfach alles, wie dies zu tun:

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 

    System.out.print("Enter a number: "); 
    int number = in.nextInt(); 
    boolean b = true; 

    for(int i = 2; i < num; i++) { 
     if(num % i == 0){ 
      System.out.println("No"); 
      b = false; 
     } 
    } 
    if(b){ 
     System.out.println(isPrime(number)); 
    } 
} 
0
/** 
* Auto Generated Java Class. 
*/ 
public class ConvertingForToWhile { 


    public static void main(String[] args) { 
    final int MAX = 66; 
    boolean isPrime = true; 
    int j = 2; 

    while (j <= MAX/2 && isPrime) 
    { 
     if(MAX % j ==0) 
     { 
     isPrime = false; 
     } 
     j++; 
    } 
    System.out.println(MAX + " is Prime? " + isPrime); 

    } 



} 
+0

Dies wird die Zahl in der Max überprüfen, wenn Sie die Nummer vom Benutzer erhalten möchten, nur importieren Sie den Scan und initialisieren Sie einige Variable wie int-Nummer; –