Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig
-
#include <stdio.h>
int main()
{int x, i;
for (x = 2; x <= 100; x++)
{
for (i = 2; i <= x; i++)
{
if (x%i == 0 && x != i) break;if (i == x) printf("%i ist eine Primzahl.\n", x);
}}
return 0;
}
-
Der Debugger kann ihn dir erklären. Einfach durchsteppen und die aktuellen Werte von x und i beobachten.
-
@franklin Falls du Visual Studio verwendest: Menupunkt "Debug", "Start Debugging".
-
Wie immer folgende Punkte:
- Codeformatierung nutzen!
- Was ist eine Primzahl?
- Wo im Programmcode gibt es Verständnisprobleme?
-
@john-0 ich verstehe die erste if Verzweigung nicht . Und so wie ich die for schleifen verstehe müssten doch i und x immer gleich groß sein ?das macht ja keinen Sinn. Aber ich werde mir das mal im debugger angucken dann verstehe ich es bestimmt.
-
@TGGC Danke
-
ich verstehe die erste if Verzweigung nicht
if (x%i == 0 && x != i) break;
x % i
ist eine sog. Restklassendivision. Das Ergebnis davon ist der Rest der bei der Divisionx / i
übrig bleibt. Wenn dieser Null ist, dann heisst dasx
ist durchi
teilbar.Die Bedingung ist also: "wenn
x
durchi
teilbar ist, undx
ungleichi
ist".
Wenn diese Bedingung zutrifft, dann wirdbreak
ausgeführt.break
bricht die (aktuelle, innerste) Schleife ab. Und zwar sofort, also ohne dass die Befehle die dahinter noch kommen würden für den aktuellen Schleifendurchlauf noch ausgeführt werden.
-
@hustbaer ich danke dir jetzt habe ich es verstanden
-
@franklin sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Und so wie ich die for schleifen verstehe müssten doch i und x immer gleich groß sein ?
Da steht ja nicht
i=x
sonderngib i nacheinander die Werte von 2 bis x
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
x % i
ist eine sog. Restklassendivision.Google sagt dazu:
About 70 results (0,40 seconds)
Stichprobenartig überprüft ist bei der Hälfte davon die Division von Restklassen gemeint und nicht die modulo-Operation.
-
@Bashar
Wenn du nen Besseren Begriff dafür weisst, lass es mich wissen
Soll ich einfach Modulo-Operation sagen?
-
Jepp, oder Division mit Rest.
-
Gut. Ich werde versuchen es mir zu merken
Wobei "Division mit Rest" ist auch Quatsch. Das würde ja bedeuten dass man sowohl das Ergebnis der Division als auch den Rest zurückbekommt. Was man ja nicht tut.
-
@hustbaer Wie wäre es mit "Divisionsrest"? Oder "Rest der ganzzahligen Division"?
"Restklassendivision" erschien mir auch komisch. Das wäre ja "Division von Restklassen", aber eine Restklasse ist ja ein mathematischer Begriff (Menge von Zahlen, die mod N denselben Rest haben), also zum Beispiel sind alle geraden Zahlen eine Restklasse (und zwar die, die zu 0 äquivalent sind in mod 2).
-
@wob
Najaa % b
ermittelt halt die Restklasse einer Zahl a bei Division durch b."Restklassendivision" erschien mir auch komisch. Das wäre ja "Division von Restklassen",
Ne, so strikt ist das im Deutschen nicht. Faschingsumzug heisst ja auch nicht dass der Fasching rumläuft und Existenzangst heisst weder dass die Existenz Angst hat noch dass man Angst hat zu existieren.
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Wobei "Division mit Rest" ist auch Quatsch. Das würde ja bedeuten dass man sowohl das Ergebnis der Division als auch den Rest zurückbekommt. Was man ja nicht tut.
Das kommt auf den Kontext an. Zumindest auf x86 und x64 bekommt man bei einer Division den remainder als Abfallprodukt. (div, idiv)
-
@Swordfish Hätte noch nicht gesehen dass man
idiv
als%
schreiben würde
-
@hustbaer Dann ist ja gcc ganz mutig
-
@Swordfish Seit wann kann GCC rückwärts übersetzen? Und seit wann ist übersetzen gleichbedeutend mit schreiben? Arrrrr.
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
@wob
Najaa % b
ermittelt halt die Restklasse einer Zahl a bei Division durch b.Nur einen Vertreter der Restklasse. Und zwar nicht irgendeinen, sondern genau den Rest bei der Division von a durch b, aber ich wiederhole mich.