Primzahlen Check Programmierung in C?


06.11.2020, 11:01

.

7 Antworten

das Konzept der Flag-Variablen ist immer dasselbe: eine Variable, die einen booleschen Wert speichert. Ein boolescher Wert ist ein Wert, der immer entweder wahr oder falsch ist oder entweder 0 oder 1 ist

Ich gehe davon aus der Primzahlen-Check wird dann über diese Variable ausgegeben

Also entweder Pimzahl oder nicht

Woher ich das weiß:Berufserfahrung

ohwehohach  06.11.2020, 11:19

Es kann durchaus sinnvoll sein, ein Flag auch noch mehr Zustände annehmen zu lassen als nur "wahr oder falsch", aber das ist der häufigste Einsatz.

1

Um zu schauen ob es eine Prime number is oder nicht.

wenn beim Modulo Rechnen herauskommt es ist keine Prime number dann setzt man flag auf 1 um dann später zu schauen ob flag 1 oder 0 ist.

Naja, flag zeigt hier an, ob die Zahl eine Primzahl ist (flag == 0) oder nicht (flag == 1). Das kann man problemlos aus dem abschließenden if-Konstrukt ersehen.

Ein Flag hat in der Programmierung immer dieselbe Funktion: eine Markierung, die irgendwas bedeutet. Was die bedeutet, ergibt sich aus dem Kontext des Programms. In diesem Fall bedeutet die Variable flag eben das.

Prinzipiell funktioniert der Algorithmus ja so: Durchlaufe alle Zahlen zwischen 2 und n/2 und prüfe, ob die gegebene Zahl ein Teiler von n ist. Wenn sie ein Teiler ist, setze das Flag und brich die Schleife ab. Am Ende: Werte aus, ob das Flag nun gesetzt ist oder nicht.

Ist eben einfach ein Merker, damit man außerhalb der Schleife weiß, dass man innerhalb der Schleife einen Treffer hatte. Man könnte das natürlich auch mit mehreren Funktionen umsetzen oder den unteren Teil oben in der Loop haben.

Flag ist eben ein relativ universeller Name für sowas, stell es dir eher vor ala:

keinePrimzahl = 1;

1 und 0 eben, weil es true und false so in C nicht gab.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

Ohne Code kann dir das niemand sagen ... Variablen können so benannt werden, wie der Programmierer will.

Da du Primzahlen erwähnst: Suchst du nach Code, der dir für alle Zahlen von z.B. 1 bis 100 alle Primzahlen ausspuckt?

Vermutlich ist das einfach eine boolsche Variable, die am Anfang wahr ist und - im Falle einer Nicht-Primzahl - auf falsch gesetzt wird. Sollte die Variable am Ende des Durchgangs immer noch wahr sein, wird die Zahl eine Primzahl sein und der Liste hinzugefügt

EDIT: gut, du hast den Code nachgereicht. In deinem Fall ist "flag" einfach nur ein Wert, der zwischenspeichert, ob die Zahl am Ende eine Primzahl ist. Am Anfang hat "flag" den Wert 0 - und sobald in der Schleife herausgefunden wird, dass deine Zahl ein Vielfaches einer kleineren Zahl ist, wird diese Variable 1 ...

Am Ende wird dann - abhängig vom Wert von flag - das Ergebnis ausgegeben - ist die Zahl prim oder nicht ...