C++ Coder Erklärung?

... komplette Frage anzeigen

2 Antworten

Was genau verstehst Du denn nicht? Der Code ist doch echt simpel.

"primality_check" bekommt einen Integer (eine Ganzzahl) "n" als Parameter und liefert einen Boolean (einen Wahrheitswert) zurück.

Er geht erstmal davon aus, dass das Ergebnis prim ist, bis er festgestellt hat, dass es nicht prim ist ("bool result = true;").

Dann prüft er, ob n < 2 sind. Wenn da zutrifft, setzt er die Variable "result" als "false" (falsch), denn die 0 und 1 sind keine Primzahlen.

Dann läuft er mit einer Schleife von "i = 2" (Startwert) solange, wie "i * i" (sprich i^2) kleiner oder gleich "n", also die zu testende Zahl, ist und inkrementiert in jedem Durchlauf "i" ("++i").

Wenn er eine Zahl "i" findet, welche die Zahl "n" teilt ("n % i == 0", sprich "die Division von n durch i den Rest Null ergibt", Stichwort "Modulo-Operator"), dann setzt er die Variable "result" auf "false" (falsch). Am Ende gibt er "result" zurück (also "false", falls er einen Teiler gefunden hat, ansonsten "true").

"get_input" bekommt keinen Parameter und liefert einen Integer zurück. Es gibt per "std::cout" (Standardausgabe) zunächst eine Eingabeaufforderung aus (das "\\n" ist ein Zeilenumbruch), liest dann einen Integer von der Standardeingabe in die Variable "n" ein und gibt die eingelesene Zahl zurück.

"write_output" nimmt einen Integerwert "n" und einen Boolean "answer" und schreibt dann, falls für "answer" der Wert "true" übergeben wurde, die zahl, gefolgt von der Zeichenfolge " is prime." (und einen Zeilenumbruch), sonst die Zahl gefolgt von der Zeichenfolge " is not prime" (und einen Zeilenumbruch).

"main" ist der Einsprungpunkt in das Programm. Es ruft "get_input" auf, um eine Zahl einzulesen, übergibt diese an "primality_check(...)", speichert das Ergebnis (Wahrheitswert, ob n prim ist oder nicht) in "n_is_prime" und übergibt anschließend sowohl "n", als auch den Wahrheitswert, an "write_output". Anschließend liefert es den Wert "0" (Erfolg = kein Fehler aufgetreten) an das Betriebssystem zurück.

Der Code ist ziemlich umständlich. Vor allem, dass "get_input" und "write_output" eigene Funktionen sind, ist absolut überflüssig. Aber an sich sollte er (für genügend kleine "n") funktionieren.

Für "n" sehr viel größer, als 2 Milliarden, wird der Code nicht funktionieren, da hier nur mit "int"-Werten gearbeitet wird, die 32 Bit lang und vorzeichenbehaftet sind, also maximal den Wert 2^31 - 1 annehmen können.

Antwort bewerten Vielen Dank für Deine Bewertung

Also wenn du das mit dem Mathe verstehst ist es gut.
    
Das untere sind Methoden. Wenn std:: da steht. Dann greift er auf den Standart "Namespace" zu.
    
Man könnte am Anfang vom Programm auch schreiben Unsing namespace std;
Und alle anderen std:: weg lassen.  
    
cin>> ist eine Eingabe.
cout<< eine Ausgabe
\\n ist ein Zeilenumbruch.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?