Division mit Rest
-
Einen schönen guten Abend,
es handelt sich hier um ein C++ Programm für die Primzahlenberechnung :
#include <iostream> using namespace std; int main() { const int MaxPrimzahl=10000; int Primzahl, Divisor; bool istEinePrimzahl; cout << "1, 2"; for (Primzahl=3; Primzahl<=MaxPrimzahl; Primzahl++) { istEinePrimzahl = true; // Pruefe, ob Primzahl wirklich eine Primzahl ist for (Divisor=2; Divisor<Primzahl; Divisor++) { // Ist das restlos teilbar? [b] if (0==Primzahl % Divisor)[/b] { // Zahl ist teilbar, also keine Primzahl! istEinePrimzahl = false; } } // Pruefung ist beendet. // Wenn es eine Primzahl ist, ausgeben! if (istEinePrimzahl) { cout << ", " << Primzahl; } } cout << endl; system("PAUSE"); }
Schritte die das Programm unternimmt :
[...]
Ausgabe der Zahl "1, 2" im Terminal.
Primzahl wird auf den Wert 3 erhöht.
Schleife wird betreten :
istEinePrimzahl wird auf true gesetzt.
Setzung von Divisor auf den Wert 2.
Teilung führt zu "nicht teilbar", Anweisung "false" wird übersprungen.**3 mod 2 = 1
3/2=1,5 (Ist in diesem Fall der Rest von 0,5 als die 1 interpretiert??)
**Sprung zurück, Divisor wird auf den Wert 3 hochgezählt, Schleife wird übersprungen/verlassen.
Ausgabe vom Wert 3 im Terminal.
Springt zur for-Bedingung zurück.
Primzahl wird auf den Wert 4 gelegt.
Setzung von Divisor auf den Wert 2.4%2 = 0 , da 2 und Rest 0.
Die Frage dreht sich eigentlich um die 1,5 da ich nicht verstehe wie es funktioniert, die 0,5 kann an sich nicht bentuzt werden, da es als int Zahl jede Nachkommastelle weggeschnitten bekommt... die 1 vorne kann es aber auch nicht sein, da sich mod an sich immer auf den Rest bezieht, kann mir jemand schnell helfen?
Ist wahrscheinlich so einfach und logisch, dass ich mich schämen müsste.
MfG
Peng(uin)
-
Ähhh, wat?
3 mod 2
ist 1
weil 3 / 2 gleich 1 Rest 1 ist.
-
Verstehe, also benutzt man mod als "wie oft passt der eine Wert in den anderen" und somit wird der Wert nicht wirklich geteilt, wie es bei einem normalen Teilungsoperator der Fall wäre.
Habe es im mod-Modus geteilt und kam dann auf diesen 1,5 Wert, was vorne und hinten keinen Sinn ergeben hat, es ist also einfach :
3mod2 = Die Zahl zwei passt einmal in die drei, ansonsten bleibt noch die 1 als Wert übrig, alles klar, danke.
-
Peng(uin) schrieb:
Verstehe, also benutzt man mod als "wie oft passt der eine Wert in den anderen"
Nein, nicht ganz. Modulo berechnet den Rest bei einer ganzzahligen Division. Schau mal hier auf Wikipedia nacht? http://de.wikipedia.org/wiki/Division_mit_Restε
-
Noch ein paar Beispiele
3 mod 2 : 3 = 1 * 2 + 1
5 mod 2 : 5 = 2 * 2 + 1
5 mod 3 : 5 = 1 * 3 + 2Die fette Zahl ist das Ergebnis von mod
Die unterstrichene bekomst du bei /