Primzahl ja/nein - besserer Code möglich?

RaylanGivens

Neues Mitglied
Hallo zusammen,
Aufgabe ist es, vom Benutzer des Programms eine Zahl einzulesen, welche anschließend dahingehend geprüft werden soll, ob sie prim ist, oder nicht. So sollte der Programmablauf sein:
Code:
Zahl: 17
17 ist prim.

Dies wäre mein Lösungsvorschlag (mit Kommentar):
Java:
import Prog1Tools.IOTools;
public class prim {
    public static void main() {
        int eingabe;
        int n;
       
        eingabe = IOTools.readInteger("Ihre Zahl: "); //Zahl wird eingelesen
       
        if (eingabe <= 0){
            System.out.println(eingabe + " ist eine ungültige Eingabe!"); //Nur für positive Zahlen
        }
        else if (eingabe == 1) {
            System.out.println(eingabe + " ist nicht prim!"); //1 ist per definitionem keine Primzahl
        }
        else {
            for(n=eingabe-1; n > 1; n--) {
                if (eingabe % n == 0) {
                    System.out.println(eingabe +" ist nicht prim!"); //Lässt sich die eingegebene Zahl ohne Rest durch eine Zahl, die nicht sie selbst und nicht 1 ist, teilen, so ist sie keine Primzahl!
                    break; //Ist die Zahl keine Primzahl, so kann die Schleife beendet werden.
                }
                else if (n==2 && eingabe % n != 0) { //Ist die Zahl auch nicht ohne Rest durch 2 teilbar, so ist sie prim.
                    System.out.println(eingabe + " ist prim!");
                }
                else {
                    continue; //eigentlich unnötig, da Schleife eh weiterlaufen würde.
                }
            }
        }
    }
}

Er tut zwar soweit das, was er tun sollte, aber irgendwie beschleicht mich das Gefühl, dass das nicht schön ist, wie ich es gelöst habe. Habt ihr Verbesserungsvorschläge oder würdet ihr sagen, es passt so?


Danke schon mal!
 

Tarrew

Top Contributor
Also erstmal kann das letzte else weg, wie du ja im Kommentar schon angemerkt hast.

Und was helfen sollte ist die Tatsache, dass jede Zahl die nicht prim ist, einen Teiler hat der >1 und <=Wurzel der Zahl ist.

Entsprechend ist es besser die Prüfung bei 2 anzufangen und nur bis zu der Wurzel der Zahl zu prüfen.
 

Flown

Administrator
Mitarbeiter
Code mal in eine eigene Methode auslagern, damit Funktionalität auch richtig geclustert wird.
Man deklariert und initialisiert Variablen in einer Zeile (außer es ist nicht möglich - aber hier ist es der Fall).
Dann siehts vielleicht so aus:
Java:
public static void main(String... args) {
  int eingabe = IOTools.readInteger("Ihre Zahl: ");
 
  if (eingabe <= 0) {
    System.out.println(eingabe + " ist eine ungültige Eingabe!");
  } else if (isPrime(eingabe)) {
    System.out.println(eingabe + " ist prim");
  } else {
    System.out.println(eingabe + " ist nicht prim!");
  }
}

public static boolean isPrime(int n) {
  if (n < 2 || n != 2 && n % 2 == 0) {
    return false;
  } else {
    final int sqrt = (int) Math.sqrt(n);
    for (int i = 3; i <= sqrt; i += 2) {
      if (n % i == 0) {
        return false;
      }
    }
    return true;
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Primzahl mit Angabe der höchsten Primzahl und Angabe der Anzahl von Primzahlen bis 100 Java Basics - Anfänger-Themen 8
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
O Primzahl rekursiv mit einem Wert ohne i, wie? Java Basics - Anfänger-Themen 6
O Erste Schritte Primzahl Methode Java Basics - Anfänger-Themen 8
I Erste Schritte Testen, ob eine Zahl eine Primzahl ist Java Basics - Anfänger-Themen 8
O Primzahl bis n Java Basics - Anfänger-Themen 5
D Primzahl Aufgabe Java Basics - Anfänger-Themen 5
T Primzahl Java Basics - Anfänger-Themen 12
I Höchste Zahl berechnen die eine Eingabe ohne Rest teilt und eine Primzahl ist Java Basics - Anfänger-Themen 2
U Primzahl-Tester Java Basics - Anfänger-Themen 3
A 10001-te Primzahl herausfinden Java Basics - Anfänger-Themen 5
L primzahl Java Basics - Anfänger-Themen 54
R Primzahl kleiner 3 Java Basics - Anfänger-Themen 2
T Primzahl Schleife Java Basics - Anfänger-Themen 15
X Primzahl Ausgabe falsch Java Basics - Anfänger-Themen 10
M Primzahl Java Basics - Anfänger-Themen 11
D Array Fehler / groesste Primzahl suchen Java Basics - Anfänger-Themen 4
F Primzahl oder nicht?! Java Basics - Anfänger-Themen 7
S Primzahl in einem Array finden Java Basics - Anfänger-Themen 21
J Primzahl mit for Schleife Java Basics - Anfänger-Themen 4
A Fehler im Primzahl Programm Java Basics - Anfänger-Themen 17
S Primzahl berechnen in Java Java Basics - Anfänger-Themen 7
K Primzahl//immer true Java Basics - Anfänger-Themen 7
ven000m Primzahl.class wie starte ich diese einzelne Datei? Java Basics - Anfänger-Themen 10
M Primzahl Java Basics - Anfänger-Themen 8
W Nächstgelegene Primzahl Java Basics - Anfänger-Themen 3
I Primzahl suchen Java Basics - Anfänger-Themen 5
G primzahl oder nicht? Java Basics - Anfänger-Themen 16
sserio Endlosschleife ja nein? Java Basics - Anfänger-Themen 13
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
K FYI: Reguläre Ausdrücke nutzen ja/nein Java Basics - Anfänger-Themen 2
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
kaoZ Stil ? - ....Nein nicht das Ende des Besens ^^ Java Basics - Anfänger-Themen 11
D Button´s Visible via Ja/Nein eingabe Java Basics - Anfänger-Themen 13
Ksanatos Ja nein verzweigung. Java Basics - Anfänger-Themen 22
N Anfrage- wiederholen Ja oder Nein Java Basics - Anfänger-Themen 12
I wie definiere ich ja oder nein für true or false Java Basics - Anfänger-Themen 7
M Kompilieren - Eclipse ja, Konsole nein Java Basics - Anfänger-Themen 15
A Englisch ja oder nein Java Basics - Anfänger-Themen 19
multiholle OOP MVC -> Ja/Nein? Java Basics - Anfänger-Themen 7
O import ja....extends nein Java Basics - Anfänger-Themen 5
Kasoki Compilen von Java Scripts (Nein kein JavaScript xD) Java Basics - Anfänger-Themen 13
V Return - JA/NEIN - Parameterübergabe Array (Referenz) Java Basics - Anfänger-Themen 7
G ZUfällig "ja" "nein" oder "vielleic Java Basics - Anfänger-Themen 7
I Dialog - "Ja" / "Nein" abfangen Java Basics - Anfänger-Themen 3
M JSP: Problem bei Link ja oder nein? Java Basics - Anfänger-Themen 2
D Komponente setvisible ja-nein Java Basics - Anfänger-Themen 4
M Datei vorhanden ja/nein? Java Basics - Anfänger-Themen 9
M Parameter existiert ja/nein - prüfen? Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben