Modulo kalkulačka

Operace modulo vrací zbytek po dělení. U kladných čísel se všichni shodují: 17 mod 5 = 2. U záporných čísel se však jazyky a matematici liší. Matematická konvence definuje a mod b tak, že výsledek je vždy v rozsahu [0, |b|) – takže -7 mod 3 = 2. Konvence jazyků C/Go/JavaScript používá celočíselné dělení se zbytkem směrem k nule, takže zbytek přebírá znaménko dělence – což znamená -7 % 3 = -1. Tato kalkulačka zobrazuje obě varianty, abyste si mohli vybrat tu, kterou vaše oblast očekává. Podporuje také modulo s plovoucí řádovou čárkou (používané při převodu úhlů, počítání hodin a zpracování signálů) a vysvětluje každý krok výpočtu.

star 4.8
auto_awesome AI
New

Modulo kalkulačka calculator

percent a mod b

The number being divided. Integers or decimals, positive or negative.

The modulus. Must be non-zero.

analytics Result

Modulo (math, floored)
2
Always in range [0, |b|)
Remainder (C-style, truncated) 2

Sign follows dividend. Matches C, C++, Go, Java, JavaScript (%).

Quotient (floor)
3
Quotient (trunc)
3
Step by step

    tips_and_updates Tips

    • • Pro modulární aritmetiku, hashování a převod úhlů použijte matematické modulo (zaokrouhlené dolů)
    • • Použijte modulo v C-stylu (zarovnané), když potřebujete shodné chování s jazyky C, C++, Go, Java nebo JavaScript
    • • Pro kladná čísla a a b se obě konvence shodují, takže rozdíl hraje roli pouze u záporných čísel
    • • Modulo, kde dělitelem je tma, není definováno – dělitel musí být nenulový
    • • Operátor % v Pythonu používá matematické (zaokrouhlené dolů) modulo: -7 % 3 = 2

    The Formula

    Matematické modulo používá celočíselné dělení dolů, takže zbytek je vždy 0 <= r < |b|. Modulo ve stylu jazyka C používá dělení se zaokrouhlením k nule, takže zbytek má stejné znaménko jako dělenec.

    r = a - b * q, where q = floor(a/b) (math) or trunc(a/b) (C-style)

    lightbulb Variables Explained

    • a Dělenec (číslo, které se dělí)
    • b Dělitel (modul)
    • q Podíl (zaokrouhlený dolů nebo k nule)
    • r Zbytek / výsledek operace modulo

    tips_and_updates Pro Tips

    1

    Pro modulární aritmetiku, hashování a převod úhlů použijte matematické modulo (zaokrouhlené dolů)

    2

    Použijte modulo v C-stylu (zarovnané), když potřebujete shodné chování s jazyky C, C++, Go, Java nebo JavaScript

    3

    Pro kladná čísla a a b se obě konvence shodují, takže rozdíl hraje roli pouze u záporných čísel

    4

    Modulo, kde dělitelem je tma, není definováno – dělitel musí být nenulový

    5

    Operátor % v Pythonu používá matematické (zaokrouhlené dolů) modulo: -7 % 3 = 2

    Operace modulo (často psaná jako a mod b nebo a % b) vrací zbytek po dělení jednoho čísla jiným a patří mezi nejpoužívanější operace v matematice a informatice. Naše kalkulačka hodin v práci a dalších cyklických procesů počítá tento zbytek pro libovolného dělence a dělitele, včetně záporných čísel a desetinných míst, přičemž zobrazuje postup krok za krokem. Pro kladná čísla je výsledek přímočarý: 17 mod 5 se rovná 2, protože 17 děleno 5 je 3 se zbytkem 2. Záporná čísla však přinášejí zásadní rozdíl mezi dvěma konvencemi: matematická (zaokrouhlená dolů) konvence vrací vždy nezáporný výsledek, zatímco programovací (zaokrouhlená k nule) konvence používaná v jazycích C, Java a JavaScript zachovává znaménko dělence. To znamená, že -7 mod 3 se v matematice rovná 2, ale ve většině programovacích jazyků -1. Pochopení obou konvencí je nezbytné pro programátory, kryptografy a každého, kdo pracuje s cyklickými vzorci, počítáním času nebo hešovacími funkcemi.

    Matematické vs. programovací modulo: Problém záporných čísel

    Rozdíl mezi matematickou a programovací konvencí modulo vyplývá z toho, jak přistupují k celočíselnému dělení. Matematické modulo používá dělení dolů (zaokrouhlování směrem k zápornému nekonečnu), takže podíl -7 děleno 3 se zaokrouhlí dolů na -3, což dává zbytek -7 minus 3 krát -3 rovná se 2. Programovací modulo používá dělení se zaokrouhlením k nule, takže podíl se zaokrouhlí na -2, což dává zbytek -7 minus 3 krát -2 rovná se -1.

    Jazyk Python používá výhradně matematické (dolů zaokrouhlené) modulo, což odpovídá konvenci očekávané v abstraktní algebře a teorii čísel. Jazyky C, C++, Java, JavaScript, Go a Rust používají modulo zaokrouhlené k nule. Ruby a Perl se chovají stejně jako Python.

    Tento rozdíl je důležitý v reálném kódu: převod záporného úhlu do rozsahu 0-359 vyžaduje matematické modulo (-90 mod 360 se rovná 270), ale operátor procenta v jazyku C vrátí -90, což vyžaduje ruční úpravu.

    Praktická použití modulární aritmetiky

    Modulární aritmetika tvoří základ překvapivě mnoha reálných systémů:

    • Počítání na hodinách je modulární: 10:00 plus 5 hodin se rovná 15:00, protože 15 mod 12 se rovná 3.
    • Dny v týdnu se opakují v cyklu modulo 7.
    • Hešovací tabulky používají modulo k mapování klíčů na indexy přihrádek: hash(key) mod table_size.
    • Kryptografické algoritmy jako RSA závisí zcela na modulárním umocňování a obtížnosti hledání modulárních inverzí pro velká prvočísla.
    • Kontrolní číslice ISBN a platebních karet využívají operace modulo pro detekci chyb (ISBN-13 používá mod 10, Luhnův algoritmus pro platební karty).
    • Cyklické datové struktury jako kruhové vyrovnávací paměti používají modulo k zalamování indexů polí: next_index se rovná (current plus 1) mod buffer_size.

    Dokonce i takové úkoly, jako je zjištění, zda je číslo sudé (n mod 2 se rovná 0), nebo získání poslední číslice (n mod 10), se spoléhají na modulo.

    Modulo s desetinnými čísly a speciální případy

    Operace modulo se přirozeně rozšiřuje na reálná čísla pomocí stejného vzorce: r se rovná a minus b krát floor(a děleno b). Například 5.5 mod 2 se rovná 1.5, protože floor(5.5/2) se rovná 2 a 5.5 minus 2 krát 2 se rovná 1.5.

    Modulo s plovoucí řádovou čárkou se široce používá v počítačové grafice pro zalamování textur (u mod 1.0 mapuje libovolnou souřadnici do rozsahu 0 až 1), normalizaci úhlů (theta mod 360 udržuje úhly v rámci jedné plné rotace) a zpracování signálů pro výpočty fází.

    Důležité okrajové případy:

    • Modulo s nulou není definováno a v jakémkoliv jazyce způsobuje chybu dělení nulou.
    • Modulo, kde je dělenec nula, vrací vždy nula (0 mod b se rovná 0 pro libovolné nenulové b).
    • Když jsou oba operandy kladné a dělenec je menší než dělitel, výsledek se rovná dělenci (3 mod 7 se rovná 3).

    Tyto vlastnosti dělají modulo předvídatelným pro kladná čísla, ale se zápornými nebo desetinnými vstupy vyžadují opatrné zacházení.

    Co je operace modulo a jak funguje?

    Operace modulo vrací zbytek zbývající po vydělení jednoho celého čísla jiným, zapsaná jako a mod b nebo a % b. Vzhledem k dělenci a a nenulovému děliteli b odpovídá na otázku: co zbude po odečtení co největšího možného počtu celých násobků b od a?

    Například 17 mod 5 = 2, protože 5 se do 17 vejde třikrát (15) a zbyde 2. Podle Wolfram MathWorld je funkce modulo formálně definována jako zbytek a děleno b a za matematické konvence vždy splňuje 0 <= r < |b|.

    Tato jednoduchá operace je základním kamenem teorie čísel, kryptografie a každodenního programování, což vám umožňuje detekovat dělitelnost, zalamovat hodnoty do pevného rozsahu a vytvářet cyklické chování.

    Vzorec pro modulo: r = a - b * floor(a/b)

    Chcete-li spočítat a mod b ručně, použijte vzorec r = a - b * q, kde q je podíl. Obě konvence se liší pouze v tom, jak se q počítá. Matematické (zaokrouhlené dolů) modulo nastavuje q = floor(a/b) se zaokrouhlováním směrem k zápornému nekonečnu; modulo ve stylu C (zaokrouhlené k nule) nastavuje q = trunc(a/b) se zaokrouhlováním k nule.

    Provedení pro jednotlivé případy:

    • Pro 17 mod 5: floor(17/5) = 3, takže r = 17 - 5*3 = 2.
    • Pro -7 mod 3 (matematicky): floor(-7/3) = floor(-2.33) = -3, takže r = -7 - 3*(-3) = 2.
    • Pro -7 % 3 (styl C): trunc(-2.33) = -2, takže r = -7 - 3*(-2) = -1.

    Jak uvádí NIST Digital Library of Mathematical Functions, zaokrouhlení dolů a k nule se pro kladné operandy shodují, což je důvod, proč se obě konvence shodují, když jsou a i b kladné.

    Jak vypočítat modulo krok za krokem na řešeném příkladu

    Výpočet a mod b je čtyřkrokový proces. Uvažujme 23 mod 6.

    • Krok 1: vydělte, 23 / 6 = 3.833.
    • Krok 2: vezměte celočíselný podíl, floor(3.833) = 3.
    • Krok 3: vynásobte zpět, 3 * 6 = 18.
    • Krok 4: odečtěte, 23 - 18 = 5.

    Takže 23 mod 6 = 5 a opravdu platí 23 = 6*3 + 5. Pro záporného dělence, jako je -23 mod 6 (matematická konvence), je floor(-23/6) = floor(-3.833) = -4, takže -23 - 6*(-4) = -23 + 24 = 1.

    Khan Academy učí tuto stejnou metodu odčítání při zavádění modulární aritmetiky a zdůrazňuje, že zbytek musí být svou velikostí vždy menší než dělitel. Ověřte svůj výsledek kontrolou, že a se rovná b krát podíl plus zbytek.

    Co je modulární aritmetika a kongruence?

    Modulární aritmetika je aritmetický systém pro celá čísla, kde se čísla po dosažení pevné hodnoty zvané modul začínají opakovat od začátku. O dvou celých číslech a a b se říká, že jsou kongruentní modulo n, zapsáno a ≡ b (mod n), když po dělení n zanechávají stejný zbytek, nebo ekvivalentně, když n dělí jejich rozdíl.

    Například 17 ≡ 5 (mod 12), protože obě zanechávají při dělení 12 zbytek 5, což je důvod, proč čas 17:00 vypadá na 12hodinových hodinách jako 5 odpoledne.

    Encyclopaedia Britannica popisuje modulární aritmetiku jako aritmetiku na konečné množině zbytků a zformalizoval ji Carl Friedrich Gauss ve svém díle Disquisitiones Arithmeticae z roku 1801. Kongruenční relace zachovávají sčítání a násobení, což z nich dělá algebrickou páteř kryptografie a kódů pro detekci chyb.

    Skutečné využití operace modulo v programování a každodenním životě

    Modulo se objevuje mnohem častěji, než si většina lidí uvědomuje:

    • Chcete-li otestovat, zda je číslo sudé, zkontrolujte n mod 2 == 0; chcete-li získat poslední číslice celého čísla, spočítejte n mod 10.
    • Kruhové vyrovnávací paměti a kruhové fronty zalamují svou pozici zápisu pomocí index = (index + 1) mod capacity, takže ukazatel nikdy nepřeteče konec pole.
    • Hešovací tabulky mapují klíče na sloty pomocí hash mod table_size.
    • Čas a kalendářní matematika jsou modulární: den v týdnu se posouvá o (day + shift) mod 7 a hodiny běží v režimu mod 12 nebo mod 24.
    • Kontrolní číslice pro ISBN-13 (mod 10) a bankovní směrová čísla spolu s Luhnovým algoritmickým ověřováním platebních karet spoléhají na modulo při zachycování překlepů.
    • V kryptografii pohání modulární umocňování RSA a Diffie-Hellmanovu výměnu klíčů.

    Klíčové vlastnosti a identity operace modulo

    Modulo splňuje několik užitečných algebraických vlastností, které zjednodušují výpočet a důkazy.

    Pravidla podobná distributivním zákonům pro kongruence říkají, že (a + b) mod n = ((a mod n) + (b mod n)) mod n, a obdobně (a * b) mod n = ((a mod n) * (b mod n)) mod n; to vám umožňuje zmenšit velké mezivýsledky před násobením, čímž se předchází přetečení.

    Klíčové identity, které si je dobré pamatovat:

    • Pokud je dělenec menší než dělitel a oba jsou kladné, výsledkem je jednoduše dělenec, takže 3 mod 7 = 3.
    • Dělenec rovný nule dává vždy nulu: 0 mod b = 0.
    • Jakýkoli násobek modulu dává nulu, takže 20 mod 5 = 0.
    • Výsledek operace a mod b je podle matematické konvence vždy striktně menší než |b|.

    Tyto identity, zdokumentované ve zdrojích jako je heslo pro kongruence na Wolfram MathWorld, činí modulární redukci rychlou a předvídatelnou.

    Časté chyby při počítání modula

    Dávejte pozor na tyto časté omyly:

    • Předpoklad, že každý jazyk vrací stejné znaménko pro záporné operandy. Výraz -7 % 3 v Pythonu dává 2, ale v jazycích Java, C a JavaScript dává -1, takže kopírování vzorce mezi jazyky bez úprav může zanést nenápadné chyby, zejména při zavinování úhlů nebo hašování.
    • Pokus o modulo nulou, což není definováno a v každém jazyce vyvolá za Běhu chybové hlášení (runtime error); vždy ověřte, že dělitel je nenulový.
    • Záměna směru zaokrouhlování podílu, kdy se zapomíná, že celočíselné dělení zaokrouhlující dolů (floored) a s oříznutou desetinnou částí (truncated) se pro záporná čísla liší.
    • Aplikace celočíselného modulu na hodnoty s plovoucí řádovou čárkou bez zohlednění zaokrouhlování může vytvořit drobné chyby; 5.5 mod 2 je přesně 1.5, ale nahromaděná odchylka plovoucí řádové čárky může dát 1.4999999.
    • Použití n mod 2 == 1 k detekci lichých čísel selhává u záporných čísel v jazycích s oříznutým dělením, kde -3 % 2 = -1; místo toho otestujte n mod 2 != 0.

    Jak se modulo liší napříč programovacími jazyky

    Jelikož znaménko zbytku pro záporné operandy je otázkou návrhu, jazyky se dělí do dvou táborů.

    • Modulo s oříznutím (podle znaménka dělence) používají jazyky C, C++, C#, Java, JavaScript, Go, Rust a Swift, takže -7 % 3 se ve všech z nich vyhodnotí jako -1.
    • Modulo zaokrouhlené dolů (podle znaménka dělitele, pro kladné dělitele vždy nezáporné) používají Python, Ruby a Perl, takže -7 % 3 se vyhodnotí jako 2.

    Některé jazyky poskytují obojí: Python má funkci math.fmod pro výsledek s oříznutím v C-stylu a mnoho standardních knihoven zpřístupňuje dedikovanou funkci pro zaokrouhlení dolů, jako je Java Math.floorMod, která pro floorMod(-7, 3) vrací 2.

    Při portování numerického kódu si vždy ověřte, jakou konvenci cílový jazyk používá. Tato kalkulačka zobrazuje matematické výsledky (zaokrouhlené dolů) i výsledky v C-stylu (s oříznutím) vedle sebe, abyste je mohli sladit s tím, co očekává vaše prostředí.

    Frequently Asked Questions

    sell

    Tags