Kies wat je wilt berekenen en vul gehele getallen in. Met “Rest bepalen” werken ook negatieve getallen en zie je het verschil tussen de wiskundige rest (0 of meer) en de %-operator in programmeertalen.
Inhoudsopgave
-
Wat je op deze pagina kunt doen
-
Waarvoor is deze berekening handig?
-
Zo werkt het
-
Formules en figuren
-
Symbolen en begrippen
-
Handig om vooraf te weten
-
Berekenen met Excel
-
Berekenen met Google Spreadsheets
-
Berekenen met Python
-
De formule in LaTeX en andere wiskundenotaties (om te kopiëren)
-
Zo laat je ChatGPT de berekening doen
-
Kenmerken van DataChef
-
Gerelateerde functies
-
Alle rekenmachines van NumberChef
Wat je op deze pagina kunt doen
- Vind de rest van een geheel getal \(a\) gedeeld door \(n\). Ook negatieve getallen werken (bijvoorbeeld \(-7\) gedeeld door \(3\)): je ziet de wiskundige rest (\(0 \le r < n\)) naast het resultaat van de %-operator in C, Java, JavaScript en soortgelijke talen (die negatief kan zijn)
- Controleer of de congruentie \(a \equiv b \pmod{n}\) klopt, met de reden erbij: is het verschil \(a - b\) een veelvoud van \(n\)?
- Bereken de exacte rest van een enorme macht, zoals \(7^{100}\) gedeeld door \(13\), met de stappen van herhaald kwadrateren (getallen die te groot zijn voor een gewone rekenmachine zijn geen probleem)
- Bekijk de rest op een klokdiagram (de cirkel van mod \(n\)) en krijg een gevoel voor hoe resten steeds weer op dezelfde plekken uitkomen (de klok verschijnt als de modulus \(n\) tussen 2 en 24 ligt)
- Een heldere uitleg van de formules en formules om te kopiëren voor Excel, Google Spreadsheets en Python vind je ook op deze pagina
Waarvoor is deze berekening handig?
Op een klok is “14 uur is 2 uur ’s middags” precies de restberekening 14 mod 12 = 2. De dagen van de week werken net zo, op een klok die elke 7 dagen een hele ronde maakt. Is het vandaag bijvoorbeeld maandag, dan is de dag over 100 dagen “2 dagen na maandag”, want 100 mod 7 = 2. Dat is dus woensdag.
Zowel een papieren agenda als een kalenderapp koppelt datums met deze restberekening aan dagen van de week.
Het laatste cijfer van een EAN-streepjescode op een product (13 cijfers) of van een ISBN-13 van een boek is een controlecijfer, gemaakt uit de andere cijfers met een restberekening. Bij EAN worden de cijfers om de beurt met 1 en 3 vermenigvuldigd en opgeteld, en het laatste cijfer wordt zo gekozen dat het totaal een veelvoud van 10 is, dus de rest bij deling door 10 is 0.
Typ je één cijfer verkeerd, dan klopt de rest niet meer, zodat kassa’s en webwinkels de fout meteen kunnen opsporen. Ook de elfproef bij het burgerservicenummer (BSN) werkt zo: een gewogen som moet door 11 deelbaar zijn. En het controlecijfer in creditcardnummers werkt op hetzelfde idee.
RSA, de bekendste publieke-sleutelversleuteling om bijvoorbeeld creditcardnummers veilig te versturen, gebruikt “de rest van een enorme macht” rechtstreeks in zijn berekeningen. Een macht modulo n kun je snel uitrekenen, maar van de uitkomst terugrekenen naar het oorspronkelijke getal is extreem moeilijk. Die eenrichtingseigenschap maakt het veilig.
Herhaald kwadrateren, waarvan de stand “Rest van een macht” op deze pagina de stappen laat zien, is de berekening die versleutelingssoftware elke dag uitvoert.
Bij programmeren gebruik je de %-operator voortdurend: i % 2 laat even en oneven getallen zien, en i % n maakt een volgorde die elke n items opnieuw begint (de volgende speler kiezen in een beurtspel, terug naar de eerste dia na de laatste, enzovoort).
Zijn er negatieve getallen in het spel, dan geeft % per taal een andere uitkomst. Het helpt bij het zoeken naar fouten om het verschil te kennen tussen “de wiskundige rest en % in C en Java”.
Verdeel 63 potloden eerlijk over 12 leerlingen: ieder krijgt er 5 en er blijven er 3 over (63 = 12 × 5 + 3). Voorraad in dozen inpakken (hoeveel volle dozen van n en hoeveel er overblijven), mensen bij een feest in groepjes verdelen: elke situatie van “eerlijk verdelen en kijken wat er overblijft” is deze berekening.
De basisformule voor delen a = n × q + r brengt al die alledaagse situaties onder in één formule.
Formules en figuren
Symbolen en begrippen
Symbolen
| \(\equiv\) | is congruent met | Het teken voor congruentie. Het is een gelijkheidsteken met drie streepjes in plaats van twee en betekent “gelijk in de wereld van de resten”, wat losser is dan “precies gelijk”. |
| \(\bmod\) (mod) | mod | Afkorting van “modulus”, van het Latijnse woord modulus (een kleine maat). “\(a \bmod n\)” staat voor “de rest van \(a\) gedeeld door \(n\)”, en “\(\pmod{n}\)” achter een vergelijking betekent “we rekenen modulo \(n\)”. |
| \(a,\ b\) | a, b | De gehele getallen waarvan je de resten bekijkt. In een congruentie zijn het de twee gehele getallen links en rechts. Letters vanaf het begin van het alfabet gebruik je van oudsher voor vaste getallen. |
| \(n\) | n | De modulus (het getal waardoor je deelt). De letter \(n\), van “number” (getal), wordt vaak gebruikt. Op deze pagina is het een geheel getal van 1 of meer. |
| \(q\) | q | Het quotiënt, van de eerste letter van “quotiënt”. Bij het delen van een negatief getal wordt het quotiënt naar het kleinere gehele getal afgerond, zodat de rest 0 of meer is (floor-deling). |
| \(r\) | r | De rest, van de eerste letter van “remainder” (het Engelse woord voor rest). In de wiskunde kies je die altijd in het bereik \(0 \le r < n\). |
| \(m\) | m | Het gehele getal in de definitie van congruentie dat zegt hoeveel keer de modulus in het verschil past. Het kan negatief of 0 zijn. |
| \(a^{k}\) | a tot de macht k | \(a\) die \(k\) keer met zichzelf is vermenigvuldigd (een macht). Het kleine getal \(k\) rechtsboven is de exponent en geeft aan hoe vaak je vermenigvuldigt. |
| % | procent (als operator: mod) | De modulo-operator die in veel programmeertalen een rest bepaalt. Het is hetzelfde teken als het procentteken, maar het doet iets anders. In C, Java en JavaScript kan de uitkomst bij negatieve getallen verschillen van de wiskundige rest (zie het belangrijkste idee bij formulekaart 1). |
Begrippen
| rest (residu) | Wat er overblijft als een deling niet opgaat. “Residu” is een wat formelere naam voor hetzelfde. In de wiskunde is de rest altijd minstens \(0\) en kleiner dan de deler. |
| quotiënt | Het gehele getal dat zegt hoe vaak je de deler kunt wegnemen. Het is de \(q\) in de basisformule voor delen \(a = n \times q + r\). |
| modulus | Het getal \(n\) waardoor je deelt om de resten te krijgen waarmee je werkt. Op een wijzerplaat is het het aantal streepjes in één hele ronde. “Modulo 12” is een korte manier om te zeggen: “kijken naar de resten bij deling door 12”. |
| congruent | Twee gehele getallen zijn congruent modulo \(n\) als ze dezelfde rest hebben bij deling door \(n\). Dit is een begrip voor gehele getallen en iets anders dan congruente figuren in de meetkunde (zelfde vorm en afmetingen). |
| congruentie | Een bewering van de vorm \(a \equiv b \pmod{n}\). Je kunt congruenties optellen, aftrekken en vermenigvuldigen zoals vergelijkingen, dus vraagstukken over resten los je op door te herschrijven. Het is een basisgereedschap van de getaltheorie, gebruikt bij wiskundewedstrijden en in de informatica. |
| veelvoud | Een getal dat je krijgt door een geheel getal met een ander geheel getal te vermenigvuldigen. “Het verschil is een veelvoud van de modulus” is de definitie van congruentie. |
| floor-deling | Een manier van delen waarbij het quotiënt naar het kleinere gehele getal wordt afgerond. Is de deler positief, dan is de rest 0 of meer, ook bij een negatief deeltal. De operator // in Python en de functie INTEGER in Excel werken zo. |
| modulo-operator | De %-operator die in programmeertalen een rest bepaalt. C, Java en JavaScript ronden het quotiënt af naar 0 (de rest krijgt het teken van het deeltal). Python en Ruby gebruiken floor-deling (de rest krijgt het teken van de deler, dus hij is 0 of meer als de modulus positief is). |
| herhaald kwadrateren | Een manier om de rest van een enorme macht met weinig vermenigvuldigingen te vinden: steeds kwadrateren en telkens de rest nemen, de exponent splitsen in een som van machten van 2 en de stukken vermenigvuldigen. Het heet in het Engels ook “exponentiation by squaring” of “square-and-multiply” en wordt onder meer gebruikt bij RSA-versleuteling. |
| restklasse | Het idee om gehele getallen in te delen naar hun rest bij deling door \(n\). In de wereld van mod \(n\) valt elk geheel getal in één van \(n\) groepen, met rest \(0\) tot \(n-1\). Even en oneven getallen zijn de indeling naar de rest bij deling door 2. |
| periodiciteit | Het feit dat de resten van machten hetzelfde patroon herhalen. Er zijn maar \(n\) mogelijke resten, dus er komt vanzelf een rest terug die al eerder voorkwam. De cyclus vinden bij opgaven over het laatste cijfer (mod 10) is een klassieker bij wiskundewedstrijden. |
| relatief priem | Twee gehele getallen zijn relatief priem als hun grootste gemene deler 1 is. Het komt voor in de voorwaarde om beide kanten van een congruentie door hetzelfde getal te mogen delen. |
Handig om vooraf te weten
Dit helpt je om de berekening op deze pagina echt te begrijpen, en niet alleen op de knop te drukken.
Kom je er niet uit, dan is terugkeren naar deze onderwerpen de snelste weg vooruit.
| Delen met rest (groep 5-6, 8-10 jaar) |
|
| Veelvouden en delers (klas 1, 12-13 jaar) |
|
| Negatieve getallen (klas 1, 12-13 jaar) |
|
| Machten en exponenten (klas 1-2, 12-14 jaar) |
|
| Delen met rest bij gehele getallen als formule (bovenbouw havo/vwo, 15-18 jaar) |
|
Berekenen met Excel
| Deeltal a | -7 |
| Modulus (deler) n | 3 |
| Wiskundige rest (0 of meer) | =REST(B1;B2) |
| Quotiënt (floor-deling) | =INTEGER(B1/B2) |
| Controle n × quotiënt + rest | =B2*B4+B3 |
| Rest zoals in C/Java (afgerond naar 0) | =B1-B2*GEHEEL(B1/B2) |
| Geheel getal a | 38 |
| Geheel getal b | 14 |
| Modulus n | 12 |
| Verschil a − b | =B1-B2 |
| Rest van het verschil ÷ n | =REST(B4;B3) |
| Uitkomst (WAAR = congruent) | =REST(B4;B3)=0 |
| Grondtal a | 7 |
| Exponent k | 100 |
| Modulus n | 13 |
| Rest van a^1 | =REST(B1;B3) |
| Rest van a^2 (kwadrateer de rij erboven en neem de rest) | =REST(B4^2;$B$3) |
| Rest van a^4 | =REST(B5^2;$B$3) |
| Rest van a^8 | =REST(B6^2;$B$3) |
| Rest van a^16 | =REST(B7^2;$B$3) |
| Rest van a^32 | =REST(B8^2;$B$3) |
| Rest van a^64 | =REST(B9^2;$B$3) |
| Rest gecombineerd voor 100 = 64 + 32 + 4 | =REST(REST(B10*B9;$B$3)*B6;$B$3) |
De Excel-functie REST geeft dezelfde “wiskundige rest” (0 of meer) als deze rekenmachine. Ook bij negatieve getallen is =REST(-7;3) gelijk aan 2. Heb je de rest zoals in C/Java nodig, gebruik dan de laatste rij van de eerste tabel, die met GEHEEL het quotiënt naar 0 afrondt.
De eerste tabel deelt −7 door 3: de rest is 2 en het quotiënt is −3.
De tweede tabel controleert 38 ≡ 14 (mod 12). De rest van het verschil 24 is 0, dus er staat WAAR (congruent).
De derde tabel bepaalt met herhaald kwadrateren de rest van 7 tot de macht 100 gedeeld door 13. Het antwoord is 9. “^” is het machtsteken. Excel rekent maar tot ongeveer 15 cijfers exact, dus als de modulus n meer dan 7 cijfers heeft, verliezen de gekwadrateerde waarden precisie. Gebruik dan de rekenmachine op deze pagina of Python.
Berekenen met Google Spreadsheets
| Deeltal a | -7 |
| Modulus (deler) n | 3 |
| Wiskundige rest (0 of meer) | =REST(B1;B2) |
| Quotiënt (floor-deling) | =INTEGER(B1/B2) |
| Controle n × quotiënt + rest | =B2*B4+B3 |
| Rest zoals in C/Java (afgerond naar 0) | =B1-B2*GEHEEL(B1/B2) |
| Geheel getal a | 38 |
| Geheel getal b | 14 |
| Modulus n | 12 |
| Verschil a − b | =B1-B2 |
| Rest van het verschil ÷ n | =REST(B4;B3) |
| Uitkomst (WAAR = congruent) | =REST(B4;B3)=0 |
| Grondtal a | 7 |
| Exponent k | 100 |
| Modulus n | 13 |
| Rest van a^1 | =REST(B1;B3) |
| Rest van a^2 (kwadrateer de rij erboven en neem de rest) | =REST(B4^2;$B$3) |
| Rest van a^4 | =REST(B5^2;$B$3) |
| Rest van a^8 | =REST(B6^2;$B$3) |
| Rest van a^16 | =REST(B7^2;$B$3) |
| Rest van a^32 | =REST(B8^2;$B$3) |
| Rest van a^64 | =REST(B9^2;$B$3) |
| Rest gecombineerd voor 100 = 64 + 32 + 4 | =REST(REST(B10*B9;$B$3)*B6;$B$3) |
Berekenen met Python
a = -7
n = 3
# De %-operator van Python geeft dezelfde wiskundige rest als deze rekenmachine (0 of meer als de modulus positief is)
print(a % n) # 2
# divmod geeft het quotiënt van de floor-deling en de rest tegelijk (a = n × quotiënt + rest)
quotient, remainder = divmod(a, n)
print(quotient, remainder) # -3 2
# congruentiecontrole: klopt 38 ≡ 14 (mod 12)? (kijk of het verschil een veelvoud van 12 is)
print((38 - 14) % 12 == 0) # True
# rest van een macht: de rest van 7 tot de macht 100 gedeeld door 13
# pow met 3 argumenten gebruikt herhaald kwadrateren, dus het is meteen klaar, ook bij enorme exponenten
print(pow(7, 100, 13)) # 9
def c_style_mod(x, m):
# zelfde resultaat als % in C, Java en JavaScript (quotiënt afgerond naar 0)
r = x % m
if r != 0 and x < 0:
r -= m
return r
print(c_style_mod(-7, 3)) # -1
De formule in LaTeX en andere wiskundenotaties (om te kopiëren)
a = n × q + r (0 ≤ r < n)
a = nq + r \quad (0 \le r < n)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><mo>=</mo><mi>n</mi><mi>q</mi><mo>+</mo><mi>r</mi>
<mo>,</mo>
<mn>0</mn><mo>≤</mo><mi>r</mi><mo><</mo><mi>n</mi>
</mrow>
</math>
a = n q + r, \ 0 <= r < n
{Quotient[a, n], Mod[a, n]}
q := floor(a/n); r := a mod n;
q = floor(a/n); r = mod(a, n);
a = nq + r (0 ≤ r < n)
a ≡ b (mod n) ⇔ a − b = n × m
a \equiv b \pmod{n} \iff a - b = nm
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><mo>≡</mo><mi>b</mi>
<mspace width="0.3em"/>
<mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
<mo>⇔</mo>
<mi>a</mi><mo>−</mo><mi>b</mi><mo>=</mo><mi>n</mi><mi>m</mi>
</mrow>
</math>
a -= b (mod n) iff a - b = n m
Mod[a - b, n] == 0
(a - b) mod n = 0;
mod(a - b, n) == 0
a ≡ b (mod n)
(a × b) mod n = {(a mod n) × (b mod n)} mod n
(a \times b) \bmod n = \{(a \bmod n)(b \bmod n)\} \bmod n
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mo>(</mo><mi>a</mi><mo>×</mo><mi>b</mi><mo>)</mo>
<mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
<mo>=</mo>
<mo>{</mo>
<mo>(</mo><mi>a</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
<mo>×</mo>
<mo>(</mo><mi>b</mi><mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
<mo>}</mo>
<mspace width="0.3em"/><mi>mod</mi><mspace width="0.3em"/><mi>n</mi>
</mrow>
</math>
(a * b) mod n = ((a mod n) * (b mod n)) mod n
Mod[a b, n] == Mod[Mod[a, n] Mod[b, n], n]
(a * b) mod n = ((a mod n) * (b mod n)) mod n;
mod(a*b, n) == mod(mod(a, n)*mod(b, n), n)
(a×b) mod n = ((a mod n)×(b mod n)) mod n
a ≡ b, c ≡ d (mod n) ⇒ a+c ≡ b+d, a−c ≡ b−d, a×c ≡ b×d (mod n)
a \equiv b,\ c \equiv d \pmod{n} \Rightarrow a + c \equiv b + d,\ a - c \equiv b - d,\ ac \equiv bd \pmod{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><mo>+</mo><mi>c</mi><mo>≡</mo><mi>b</mi><mo>+</mo><mi>d</mi>
<mo>,</mo>
<mi>a</mi><mo>−</mo><mi>c</mi><mo>≡</mo><mi>b</mi><mo>−</mo><mi>d</mi>
<mo>,</mo>
<mi>a</mi><mi>c</mi><mo>≡</mo><mi>b</mi><mi>d</mi>
<mspace width="0.3em"/>
<mo>(</mo><mi>mod</mi><mspace width="0.3em"/><mi>n</mi><mo>)</mo>
</mrow>
</math>
a + c -= b + d, \ a - c -= b - d, \ a c -= b d (mod n)
Mod[a + c, n] == Mod[b + d, n] && Mod[a - c, n] == Mod[b - d, n] && Mod[a c, n] == Mod[b d, n]
(a + c) mod n = (b + d) mod n;
mod(a + c, n) == mod(b + d, n)
a + c ≡ b + d (mod n)
Zo laat je ChatGPT de berekening doen
Je bent een rekenassistent voor getaltheorie (eigenschappen van gehele getallen). Voer de volgende berekening uit door daadwerkelijk Python-code uit te voeren en baseer je antwoord alleen op de getallen uit het resultaat van de uitvoering (geef geen antwoord op basis van hoofdrekenen of gokken). Bereken de volgende 3 vraagstukken. 1. De wiskundige rest van −7 gedeeld door 3 (gekozen als 0 of meer) en het quotiënt 2. Of 38 ≡ 14 (mod 12) klopt (laat ook zien of het verschil een veelvoud van 12 is) 3. De rest van 7 tot de macht 100 gedeeld door 13 (gebruik pow(7, 100, 13)) Gebruik in Python %, divmod en pow(grondtal, exponent, modulus) en laat de formules zien die je hebt gebruikt en de getallen uit het resultaat van de uitvoering.
Zo werkt het
-
1Vul je getallen inTyp de getallen waarmee je wilt rekenen in de invoervelden
-
2BerekenKlik op de knop “Berekenen”
-
3Bekijk het resultaatHet resultaat verschijnt meteen. Op dezelfde pagina vind je ook de uitwerking van de berekening en de uitleg van de formule
Kenmerken van DataChef
Geen voorkennis nodig – intuïtieve en eenvoudige bediening
Zonder persoonlijke gegevens op te geven
Bestand wordt automatisch verwijderd zodra je op "Downloaden" klikt
Geen bronvermelding vereist
Geen toestemming vooraf nodig