Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig
-
@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.
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
@Swordfish Seit wann kann GCC rückwärts übersetzen? Und seit wann ist übersetzen gleichbedeutend mit schreiben? Arrrrr.
magic.
-
Das ist auf quasi auf jeder Plattform so, weil im Divisionsalgorithmus nunmal der Rest berechnet wird. Er ist immer als Übertrag für die nächste Stelle nötig.
-
@Bashar sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
@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.
Wenn du's so genau nehmen willst dann wird das kleinse Element der Restklasse ermittelt. Auf jeden Fall etwas das eindeutig die Restklasse identifiziert.
-
@TGGC sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Das ist auf quasi auf jeder Plattform so, weil im Divisionsalgorithmus nunmal der Rest berechnet wird. Er ist immer als Übertrag für die nächste Stelle nötig.
Nur FYI: Ich hab mich auf den
%
Operator von C++ bezogen. Und der gibt nunmal nur ein Ergebnis zurück, und das ist nur der Rest, ohne das Ergebnis der Division. Was die CPU dann im übersetzten Programm macht ist egal wenn es lediglich darum geht jmd. zu erklären was in C++ der%
Operator macht.
-
Was der Operator "macht" und welches Ergebnis er liefert sind für manche Personen aber verschiedene Sachen, da es auch immer Leute gibt, die sich für Interna interessieren. Ich kann also durchaus nachvollziehen, wenn eine Antwort wie "% ist eine Divsion, die den Rest zurück gibt" in bestimmten Kontexten von manchen als eine technisch logischere Antwort angesehen wird.
-
@Swordfish sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Das kommt auf den Kontext an.
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Arrrrr.
-
@TGGC Der Operator ist ein rein logisches Konstrukt des C++ Standards. Der "macht" überhaupt nichts. Er hat ein definiertes Ergebnis. Und dieses logische Konstrukt damit zu beschreiben was bei der Ausfürhung des generierten Maschinencode als Abfallsprodukt entsteht, wenn dieses Abfallsprodukt über die Mittel der Sprache in keiner Weise sichtbar oder erreichbar ist, macht für mich keinen Sinn.
"% ist eine Divsion, die den Rest zurück gibt" in bestimmten Kontexten von manchen als eine technisch logischere Antwort angesehen wird
Nur dass sie falsch ist.
idiv
ist eine Division die sowohl das Ergebnis der Division als auch den Rest zurückliefert.%
ist aber nichtidiv
. Es wird nur üblicherweise mittelsidiv
umgesetzt.
-
@Swordfish sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
@Swordfish sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Das kommt auf den Kontext an.
Ja, und der Kontext war hier ziemlich klar. Stell dich nicht so blöd.
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
idiv
ist eine Division die sowohl das Ergebnis der Division als auch den Rest zurückliefert.%
ist aber nichtidiv
.Das habe ich doch nicht behauptet.
Ich wollte nur ausdrücken daß es höchstwahrscheinlich auf div/idiv rausläuft wenn dem Compiler auf x86/x64 nichts besseres (konstanten, zweierpotenzen) einfällt.
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Und dieses logische Konstrukt damit zu beschreiben was bei der Ausfürhung des generierten Maschinencode als Abfallsprodukt entsteht, wenn dieses Abfallsprodukt über die Mittel der Sprache in keiner Weise sichtbar oder erreichbar ist, macht für mich keinen Sinn.
Schön das es für dich keinen Sinn macht. Du bist aber nicht jeder. Es gibt andere Leute die als Antwort auf "Was macht dieses Programm?" nicht hören wollen "gar nichts" sondern wie das Kompilat davon konkret auf eine realen Maschine abläuft.
-
@TGGC
Kannst du nicht zwischen dem worum es geht/dem Kontext in dem eine Aussage getroffen wurde, und dem was irgendjemanden interessieren könnte unterscheiden?Klar kann das jemanden interessieren. Interessiert mich auch oft genug. Nur muss ich mich nicht blöd belehren/korrigieren lassen, schon gar nicht von jemandem wie @Swordfish der bekanntermassen Leute gerne falsch versteht damit er was zu schlaumeiern oder kritisieren hat, wenn meine Aussage im durchaus vorhandenen und sehr klaren Kontext nicht falsch war.
Das ist wie wenn jemand in Österreich, in einer Diskussion über österreichisches Recht fragt
A: Ist eigentlich X legal?
und dann jemand antwortet
B: Nein.
und dann ein dritter schlaumeiert
C: Kommt drauf an in welchem Land.Macht das Sinn? Nein. Macht die Antwort "es könnte aber jemand interessieren" dann Sinn? Nein.
Und jetzt GFU
-
Ich wollte nur ausdrücken daß es höchstwahrscheinlich auf div/idiv rausläuft wenn dem Compiler auf x86/x64 nichts besseres (konstanten, zweierpotenzen) einfällt.
Und jetzt erklär mir bitte was das damit zu tun hat wie in C++ die
%
Operation definiert ist und wie manihr Ergebnis am besten bezeichnen solltesie am besten auf deutsch beschreiben/benennen sollte?Und "Division mit Rest" ist da einfach falsch, weil es halt einfach anders definiert ist.
-
@hustbaer sagte in Die Ausgabe von Primzahlen bis 100. Kann mir jemand den genauen Ablauf erklären ich verstehe das nicht richtig:
Nur muss ich mich nicht blöd belehren/korrigieren lassen, schon gar nicht von jemandem wie @Swordfish der bekanntermassen Leute gerne falsch versteht damit er was zu schlaumeiern oder kritisieren hat, wenn meine Aussage im durchaus vorhandenen und sehr klaren Kontext nicht falsch war.
Jetzt komm mal wieder runter. Weder habe ich Dich absichtlich noch unabsichtlich falsch Verstanden und korrigiert oder kritisiert habe ich Dich auch nirgends. Die ursprüngliche Antwort war bloß als Zusatzinformation für Leser X gedacht.
-
@hustbaer Es geht hier im Kontext darum dem OP zu erklären, warum man mit paar Schleifen und % Zahlen findet, die nur durch sich selbst und 1 teilbar sind. Man könnte es auch so formulieren: "Was hat % mit Ganzzahl-Division zu tun?"
-
@TGGC Darum ging es nicht mehr wirklich, weil das Thema schon durch war. Genau das habe ich ihm nämlich bereits hier erklärt: https://www.c-plusplus.net/forum/topic/349807/die-ausgabe-von-primzahlen-bis-100-kann-mir-jemand-den-genauen-ablauf-erklären-ich-verstehe-das-nicht-richtig/7
@Bashar meinte dann dass "Restklassendivision" falsch bzw. nicht optimal wäre als Bezeichnung/Beschreibung des
%
Operators. Darauf hin habe ihn gefragt was besser wäre. Dort kam dann "Division mit Rest". Das ist der Kontext.Und den
%
Operator als "Division mit Rest" zu bezeichnen ist mMn. einfach falsch. Und das unabhängig davon was vielleicht zusätzlich noch interessant wäre. Zusätzlich darf man gerne noch dazuschreiben was auch immer man möchte, das ist was ganz anderes.
-
#include <iostream> int main() { int remainder = 5 % 0; std::cout << remainder << '\n'; }
In function 'int main()': main.cpp:5:23: warning: division by zero [-Wdiv-by-zero] 5 | int remainder = 5 % 0;
-
So what?
Der C++ Standard wird nich durch GCC Warnings/Fehlermeldungen definiert.
-
Dieser Beitrag wurde gelöscht!
-
@hustbaer Es ist IMO verkehrt,
%
als 'Bestimmung der Restklasse' zu bezeichnen. Da kann ich auch erklären,/
führt Polynomdivision durch, weil ja ein Computer die Zahl als Liste der Polynomialkoeffizienten mit x=2 repräsentiert. Allein die Tatsache, dass wir uns über die Eignung dieses Begriffs streiten, disqualifiziert ihn doch. Soll sich doch nicht jeder Neuling plötzlich in Zahlentheorie einlesen muessen, um Divisionsreste zu bestimmen.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.
Interessanterweise werden die meisten Kompilate fuer
%
dennoch die Divisionsinstruktion der Maschine ausführen, die den Rest mitbestimmt und in einem zweiten Register platziert. Um diese Tatsache ausnutzen zu können, haben wir ja auchstd::div
im Standard. Ich wäre allerdings ebenfalls für Modulo Operator. Das ist völlig eindeutig und im Einklang mit Wikipedia und anderen Quellen. 'Division mit Rest' suggeriert nämlichstd::div
.
(^ Das ist fuer andere Leser, ich weiss dass Du das weisst )