Modulokalkylator
Beräkna resten vid heltalsdivision (modulo-operation). Prova denna kostnadsfria online-matematikkalkylator för omedelbara, exakta resultat. Ingen registrering.
Vad är modulooperationen?
Modulooperationen (mod, eller %) returnerar resten efter att ett tal dividerats med ett annat tal. För a mod b: dividera a med b, och resultatet är resten. Till exempel 17 mod 5 = 2 (eftersom 17 = 3×5 + 2). Resultatet är alltid i intervallet [0, b-1] för positiva värden.
Den grundläggande relationen: a = q×b + r, där q är kvoten (floor(a/b)) och r är resten (0 ≤ r < b). Modulo är den kompletterande operationen till heltalsdivision — om a ÷ b = q med rest r, då a mod b = r. Denna beräknare använder den verkliga matematiska modulo-definitionen (alltid icke-negativ för positiv delare), snarare än den signerade rest som används av vissa programmeringsspråk.
Modulär aritmetik — aritmetik med en fast modul där tal "vänder om" — utgör grunden för klockaritmetik. Timmar på en klocka beräknas mod 12 eller mod 24. Om det är 10-tiden och du lägger till 5 timmar: (10 + 5) mod 12 = 3 (PM). Denna "vänder om"-beteende är centralt för oändligt många algoritmer i datavetenskap, kryptografi och talteori.
Moduloexempel och steg-för-steg-lösningar
Förståelsen av modulo blir intuitiv med utförda exempel. För varje beräkning nedan är formeln: rest = a − floor(a ÷ b) × b.
| Uttryck | Kvot (floor) | Rest (a mod b) | Verifiering |
|---|---|---|---|
| 17 mod 5 | 3 | 2 | 3×5 + 2 = 17 ✓ |
| 20 mod 4 | 5 | 0 | 5×4 + 0 = 20 ✓ |
| 7 mod 3 | 2 | 1 | 2×3 + 1 = 7 ✓ |
| 100 mod 7 | 14 | 2 | 14×7 + 2 = 100 ✓ |
| 13 mod 13 | 1 | 0 | 1×13 + 0 = 13 ✓ |
| 1 mod 5 | 0 | 1 | 0×5 + 1 = 1 ✓ |
| 256 mod 16 | 16 | 0 | 16×16 + 0 = 256 ✓ |
| 365 mod 7 | 52 | 1 | 52×7 + 1 = 365 ✓ |
Observera 365 mod 7 = 1: detta berättar oss att en icke-springande år har 52 fullständiga veckor plus 1 extra dag, vilket är varför dagen av veckan skiftar med 1 varje icke-springande år. Ett springande år (366 dagar) mod 7 = 2, vilket skiftar dagen med 2.
Modulära tillämpningar
Modulo förekommer överallt i programmering och matematik. Udda/even-kontroll: om n % 2 == 0, är n jämnt. Cirkulära arrayer och ringbuffrar: index = (current_index + 1) % array_size vänder om till början. Hash-tabeller: bucket = hash(key) % num_buckets kartar någon hash-värde till ett giltigt bucket-index, säkerställer inga utgångsgränser.
I kalenderberäkningar använder dagavveckla aritmetik mod 7. Zellers formel och Doomsday-algoritmen båda bygger på modulär aritmetik för att bestämma dagavveckla för någon dag. Dessa fungerar eftersom det finns exakt 7 dagar i en vecka — en fast modul. Tidszonavvikelser använder mod 24 för att räkna timvärden korrekt över midnattens gräns.
I digitala system används modulo överallt där minnesadresser är inblandade. Sida-tabellposter, cache-set-vals och minnes-mappade I/O alla bygger på modulär indexering. CPU-instruktionssätten innehåller vanligtvis en rest (modulo-lika) instruktion bredvid division, och SIMD-vektorinstruktioner använder modulo för länk-växling i shuffle.
I felupptäckning beräknas cirkulära redundanskontroller (CRC) och checksummer med hjälp av polynommodulär aritmetik över GF(2). Kreditkortnummer passerar Luhns algoritm (en modulo-10 kontroll). ISBN-10-boknummer använder mod 11. Dessa checksummer upptäcker transponerings- och en-siffersfel i numeriska koder.
Modul i Kryptografi
Modulär aritmetik är den matematiska grundvalen för modern offentlig nyckelkryptografi. De tre viktigaste kryptografiska algoritmerna — RSA, Diffie-Hellman och Elliptisk kurva kryptografi — alla bygger på operationer som utförs modulo ett stort primtal eller ett sammansatt tal.
RSA-kryptering använder modulär exponentiering: för att kryptera ett meddelande M med offentlig nyckel (e, n), beräkna C = M^e mod n. För att avkoda, beräkna M = C^d mod n där d är den privata nyckeln. Säkerheten bygger på svårigheten att faktorisera n (ett stort semiprimtal) — att bara veta n är det omöjligt att beräkna p och q för nyckelstorlekar över 2048 bitar.
Diffie-Hellman nyckelutbyte tillåter två parter att etablera en delad hemlig nyckel över en osäker kanal: Alice skickar A = g^a mod p, Bob skickar B = g^b mod p. Varje part beräknar den delade hemliga nyckeln: Alice beräknar B^a mod p = g^(ab) mod p, Bob beräknar A^b mod p = g^(ab) mod p. En avlyssnare som avlyssnar g^a mod p och g^b mod p kan inte återställa g^(ab) mod p utan att lösa det diskreta logaritmen.
Säkerheten i dessa system bygger på den envägda naturen av modulär exponentiering: beräkningen g^a mod p är snabb (användande av upprepat kvadrerande, O(log a) multiplikationer), men att återställa det — att hitta ett givet g^a mod p — anses kräva exponentiell tid för stora primtal p.
Modul med Negativa Tal och Gränsfall
Modulär beteende med negativa tal varierar mellan programmeringsspråk, vilket orsakar många svåra att hitta fel. Förståelsen av skillnaden är avgörande för programutvecklare.
| Språk | -7 % 3 | 7 % -3 | Definition |
|---|---|---|---|
| Python | 2 | -2 | Tecken följer delare (sann modulo) |
| JavaScript | -1 | 1 | Tecken följer delat (avrundning) |
| C / C++ | -1 | 1 | Tecken följer delat (C99+) |
| Java | -1 | 1 | Tecken följer delat |
| Ruby | 2 | -2 | Tecken följer delare (sann modulo) |
| Matematik (definition) | 2 | 1 (eller odefinierat) | Är alltid icke-negativ för positiv delare |
I matematiken returneras alltid ett icke-negativt resultat: -7 mod 3 = 2 (eftersom -7 = -3×3 + 2, och 0 ≤ 2 < 3). Denna kalkylator använder den matematiska definitionen.
Säkert sätt att säkerställa ett icke-negativt resultat i vilket språk som helst: ((a % b) + b) % b. Detta hanterar negativa indata korrekt och används internt av vår kalkylator. Detta mönster är avgörande när man använder modulo för array-indexering eller kalenderdagberäkningar där negativa resultat skulle orsaka fel.
Gränsfall att komma ihåg: (1) Något tal mod 1 = 0 — delning med 1 lämnar inget resterande. (2) Något tal mod sig självt = 0. (3) 0 mod något icke-nollvärde = 0. (4) Delning (och modulo) med noll är odefinierat — validera alltid delaren innan du beräknar modulo. Vår kalkylator visar ett tydligt felmeddelande för modulo med noll.
Modulo och delbarhets tester
Ett av de mest praktiska användningarna av modulo är att testa delbarhet utan att utföra fullständig division. Ett tal a är delbart med b om och endast om a mod b = 0. Detta möjliggör snabba delbarhetskontroller:
| Delbarhet av | Test | Exempel |
|---|---|---|
| 2 | n mod 2 = 0 (sista siffran jämnt) | 128 mod 2 = 0 ✓ |
| 3 | Summan av siffrorna mod 3 = 0 | 123: 1+2+3=6, 6 mod 3 = 0 ✓ |
| 4 | Sista två siffrorna mod 4 = 0 | 312: 12 mod 4 = 0 ✓ |
| 5 | Sista siffran är 0 eller 5 | 735 mod 5 = 0 ✓ |
| 9 | Summan av siffrorna mod 9 = 0 | 369: 3+6+9=18, 18 mod 9 = 0 ✓ |
| 10 | n mod 10 = 0 (sista siffran är 0) | 500 mod 10 = 0 ✓ |
De här delbarhetsreglerna är snabbskrivna från modulära aritmetiska egenskaper. Siffrasumreglerna för 3 och 9 fungerar eftersom 10 ≡ 1 (mod 3) och 10 ≡ 1 (mod 9), vilket innebär att varje siffras positionella värde är irrelevant för delbarhet av 3 eller 9. Dessa lärs ut i grundskolan utan modulära aritmetikakontext, men den underliggande mekanismen är modulo.
Modulär exponentiering: Snabb kraftmod
Att beräkna a^b mod n direkt genom först att beräkna a^b, sedan ta mod n, är praktiskt taget omöjligt för stora exponenter — a^100 kan ha tusentals siffror. Modulär exponentiering använder identiteten (a×b) mod n = ((a mod n) × (b mod n)) mod n för att hålla mellanliggande resultat små.
Den snabba algoritmen använder upprepad kvadrering (binär exponentiering):
- Skriv b i binär form: t.ex., b=13 = 1101₂
- Beräkna a, a², a⁴, a⁸ var och en tagen mod n
- Multiplikera de potenser som motsvarar 1-bits: a¹³ = a⁸ × a⁴ × a¹ (mod n)
Detta minskar antalet multiplikationer från b till O(log₂ b). För b = 2048-bit RSA-exponenter (~10^600), är det skillnaden mellan miljarder av multiplikationer och bara ~2000. Utan denna optimering skulle RSA-kryptering vara helt omöjlig.
Ofta ställda frågor
Vad är 15 mod 4?
15 mod 4 = 3. Eftersom 15 = 3×4 + 3, är resten 3. Verifiera: 3×4 = 12, och 15 − 12 = 3. ✓
Vad betyder mod 0?
Modulo av noll är odefinierat, precis som division av noll. Du kan inte beräkna ett mod 0. Vårt kalkylator returnerar ett felmeddelande i detta fall. Alla division-baserade operationer kräver ett icke-noll-divisor.
Hur relaterar modulo till delbarhet?
Ett tal a är delbart av b om och endast om a mod b = 0. Till exempel 24 mod 6 = 0, så 24 är delbart med 6. 25 mod 6 = 1, så 25 är inte delbart med 6. Detta gör modulo till det grundläggande verktyget för delbarhetskontroll i datavetenskap.
Vad är skillnaden mellan mod och rest?
För positiva tal är mod och rest identiska. För negativa tal skiljer de sig: den matematiska modulo returnerar alltid ett icke-negativt resultat (tecken följer delaren), medan resten tar tecknet på dividendet. Till exempel -7 mod 3 = 2 (matematik), men -7 remainder 3 = -1 (som i C, Java, JavaScript).
Vad är 10 mod 3?
10 mod 3 = 1. Eftersom 10 = 3×3 + 1, är resten 1. Du kan verifiera: 3×3 = 9, och 10 − 9 = 1. Detta betyder att 10 lämnar en rest av 1 när den delas med 3, så 10 är inte delbart med 3.
Vad är 0 mod 5?
0 mod 5 = 0. Noll delat med något annat tal än noll ger kvot 0 och rest 0. I allmänhet är 0 mod n = 0 för alla n ≠ 0. Detta är konsistent med definitionen: 0 = 0×5 + 0.
Hur används modulo i programmering?
Vanliga programmeringsanvändningar inkluderar: kontrollera om ett tal är jämnt/oddt (n%2==0), vrida array-indexer (index%längd), implementera ring-buffer, fördela objekt till burkar i hash-tabeller (hash%storlek), vrida genom tillstånd i en statmaskin och säkerställa att periodiska händelser aktiveras varje nte iteration (räknare%n==0).
Vad är klockaritmetik?
Klockaritmetik är varje dagens modulär aritmetik. En 12-timmars klocka använder mod 12: 11-tiden + 3 timmar = (11+3) mod 12 = 2-tiden. Denna omvändning är exakt modulär aritmetik. Likaså använder dagar i veckan mod 7 och militärtid använder mod 24 för timmar.
Varför är modulo viktigt i kryptering?
Modulär aritmetik gör det möjligt att skapa enkelriktade funktioner. Beräkna g^a mod p (givet g, a, p) är snabbt, men hitta g^a mod p och p (det diskreta logaritmen) är beräkningsmässigt omöjligt för stora primtal. Denna asymmetri är grunden för Diffie-Hellman-nyckelutbyte, RSA och de flesta offentliga nyckelkrypteringar som skyddar internetkommunikationer.
Vad är resultatet av något tal mod 1?
Varje heltal mod 1 = 0. Delat med 1 lämnar alltid ingen rest — varje heltal är perfekt delbart med 1. Detta är matematiskt konsistent: a = a×1 + 0, så resten är alltid 0. Detta kantenfall är viktigt att hantera i modulär aritmetikimplementeringar.
Modul i vardagslivet: Praktiska exempel
Modulär aritmetik dyker upp mycket oftare i det dagliga livet än de flesta människor inser. När du läser en klocka, beräknar när en veckovis event återkommer, kontrollerar om ett nummer är delbart med 9 eller tittar på sista siffran i ett år för att bestämma vilken dag av veckan en årsdag infaller på, gör du modulär aritmetik – även om du inte använder det namnet.
Tidsplanering och återkomst: Om ett event sker varje 7:e dag och idag är onsdag (dag 2, nollindext från söndag=0), då är 30 dagar framåt (2+30) mod 7 = 32 mod 7 = 4, vilket är torsdag. Denna direkt beräkning är snabbare än att räkna veckor och dagar separat. Likaså, om en prenumeration återuppgår den 28:e varje månad och det är nu den 15:e, är dagar fram till återuppgång (28-15) mod 31 = 13 dagar.
Digitala kontrollsiffror: ISBN-13-kodstandarden använder modul 10. Den sista siffran i något ISBN-13 är vald så att den viktade summan av alla 13 siffror är delbar med 10. Om du felaktigt skriver in en enda siffra när du anger ett boks ISBN, kommer kontrollen att misslyckas (mod 10 ≠ 0) och ett fel flaggas. Kreditkortnummer använder Luhns algoritm – en mod-10-kontroll – för samma ändamål. ISBN-10-standard använder mod 11, vilket tillåter detektering av enskilda transponeringar.
Minne och adresser: Minnet är vanligtvis adresserat i potenser av 2 (1024, 2048, 4096 byte per sida). När ett program hämtar minne använder OS modulär aritmetik för att beräkna vilken minnesida en adress faller inom: sidnummer = adress mod sidstorlek. Cache linjeval i CPU-cacher använder modulär aritmetik på samma sätt. Buffer wrap-around i ljudbehandling, nätverkspaketkö i kö och videostreaming använder cirkulär buffermatematik: skrivposition = (skrivposition + 1) % buffertstorlek.
Konst och musikmönster: Rytmsmönster i musikteori analyseras med hjälp av modulär aritmetik. En 4/4-takt har taktslag 0, 1, 2, 3 som upprepas – en mod-4-cykel. Polyrhythmiska mönster uppstår när två oberoende rytmer med perioder m och n spelar samtidigt; de synkroniserar varje lcm(m,n) taktslag. Visuella mönster som mosaikmönster upprepas med modulära perioder i två dimensioner.
Geografiska och tidszonberäkningar: UTC-avvikelser sträcker sig från -12 till +14. Omvandling mellan tidszoner: givet tid T i UTC, lokal tid = (T + avvikelse) mod 24. Det resulterande värdet kan verka ologiskt (t.ex. 23 + 5 = 28, mod 24 = 4, vilket betyder 4:00 på morgonen nästa dag), men modulära operationen hanterar midnattsgrenen korrekt. Internationella datumlinjekorsningar använder mod 24 i kombination med dagavveckla beräkningar med mod 7.
Att förstå modul gör dessa vardagliga beräkningar tydligare, snabbare och mindre felkänsliga. När du ser mönstret kommer du att märka modulär aritmetik i compiler-optimiseringar, rotationsalgoritmer i videospel, round-robin-turneringar och lastbalansering över serverkluster – alla beroende på det enkla men kraftfulla begreppet kvarstad efter division.