Čínská věta o zbytcích

Čínská věta o zbytcích (také známa jako Čínská věta o zbytku nebo Čínská zbytková věta) je matematické tvrzení z modulární aritmetiky. Pojednává o vlastnostech čísel v grupách kongruence modulo n (grupy Z n {\displaystyle \mathbb {Z} _{n}} ). Využívá se v algoritmech pro zpracování velkých čísel nebo v kryptografii. Nejstarší zmínkou o této větě je problém 26 z knihy Sun-c' Suan Ťing, kterou ve 3. století našeho letopočtu napsal čínský matematik Sun-c'.

Znění

Existují dvě ekvivalentní znění této věty:

Aritmetická formulace

Předpokládejme, že m 1 , m 2 , , m r {\displaystyle m_{1},m_{2},\ldots ,m_{r}} jsou navzájem po dvou nesoudělná přirozená čísla, m i 2 {\displaystyle m_{i}\geq 2} pro i = 1 , , r {\displaystyle i=1,\ldots ,r} . Potom každá soustava rovnic:

x a 1 ( mod m 1 ) {\displaystyle x\equiv a_{1}{\pmod {m_{1}}}\,\!}
x a 2 ( mod m 2 ) {\displaystyle x\equiv a_{2}{\pmod {m_{2}}}\,\!}
{\displaystyle \quad \quad \vdots \,\!}
x a r ( mod m r ) {\displaystyle x\equiv a_{r}{\pmod {m_{r}}}\,\!}

má řešení x a toto řešení je určeno jednoznačně v modulo M = m 1 m 2 m r {\displaystyle M=m_{1}\cdot m_{2}\cdot \ldots \cdot m_{r}} .

Algebraická formulace

Nechť m 1 , m 2 , , m r {\displaystyle m_{1},m_{2},\ldots ,m_{r}} jsou navzájem nesoudělná přirozená čísla, m i 2 {\displaystyle m_{i}\geq 2} pro i = 1 , , r {\displaystyle i=1,\ldots ,r} . Pak grupy Z m 1 × × Z m r {\displaystyle Z_{m_{1}}\times \ldots \times Z_{m_{r}}} a Z m 1 m r {\displaystyle Z_{m_{1}\cdot \ldots \cdot m_{r}}} jsou izomorfní. Izomorfismem je (kromě jiných) zobrazení f : Z m 1 m r Z m 1 × × Z m r {\displaystyle f:Z_{m_{1}\cdot \ldots \cdot m_{r}}\rightarrow Z_{m_{1}}\times \ldots \times Z_{m_{r}}} dané předpisem f ( x ) = ( x m o d m 1 , , x m o d m r ) {\displaystyle f(x)=(x\;mod\;m_{1},\ldots ,x\;mod\;m_{r})} .

Ekvivalence předchozích dvou formulací

Nechť platí tvrzení "aritmetická formulace". Zobrazení f z tvrzení "algebraická formulace" je homomorfismus zřejmě. Dále f ( x ) = ( a 1 , , a r ) {\displaystyle f(x)=(a_{1},\ldots ,a_{r})} právě tehdy, když x řeší soustavu příslušnou a 1 , , a r {\displaystyle a_{1},\ldots ,a_{r}} . Proto f je prosté díky jednoznačnosti řešení a f je na díky existenci řešení.

Nechť naopak platí „algebraická formulace“, pak zobrazení f 1 {\displaystyle f^{-1}} poskytuje řešení soustavy z „teoreticky číselné formulace“. Jednoznačnost tohoto řešení plyne z prostoty f.

Zobecnění čínské věty pro soudělná čísla

m1, m2 jsou libovolná přirozená čísla větší než 2. Označme d = GCD(m1,m2), kde GCD(a,b) se rozumí největší společný dělitel čísel a, b. Pak jsou následující dvě podmínky ekvivalentní:

  1. Soustava x = a 1   v   Z m 1 x = a 2   v   Z m 2 {\displaystyle {\begin{matrix}x=a_{1}\ {\mbox{v}}\ Z_{m_{1}}\\x=a_{2}\ {\mbox{v}}\ Z_{m_{2}}\end{matrix}}} má řešení.
  2. Platí d|(a2–a1) (tedy (a2–a1) je dělitelné d).

Jestliže platí d|(a2–a1), je řešení x určeno jednoznačně v ZM, kde M = LCM(m1,m2), kde funkcí LCM(a,b) se rozumí nejmenší společný násobek čísel a, b.

Použití

Na základě této věty lze vytvořit algoritmus výpočtu zbytku po dělení velké mocniny zadaného čísla. Tento algoritmus má své uplatnění například v šifrovacím protokolu RSA.

Praktická úloha

Pokud vojáky seřadíme do 5 řad, zbudou 4. Pokud je seřadíme do 7 řad, zbude 1. Kolik je vojáků?

Čínská věta říká, že v rozmezí 1 až 35 je právě jedno číslo, které vyhovuje našemu zadání. Řekněme, že vojáků je a. Zapišme problém matematicky.

5 k + 4 = a {\displaystyle 5\cdot k+4=a}
7 l + 1 = a {\displaystyle 7\cdot l+1=a}

Pro nějaká přirozená čísla k, l. Jinými slovy

a = 4 ( mod 5 ) {\displaystyle a=4{\pmod {5}}}
a = 1 ( mod 7 ) {\displaystyle a=1{\pmod {7}}}

Proveďme substituci

5 k + 4 = 1 ( mod 7 ) {\displaystyle 5\cdot k+4=1{\pmod {7}}}

Přičtěme trojku, abychom se zbavili čtyřky na levé straně

5 k = 4 ( mod 7 ) {\displaystyle 5\cdot k=4{\pmod {7}}}

Chceme se zbavit pětky, proto rovnici vynásobme "inverzem 5", což je v tomto případě 3

3 5 k = 3 4 ( mod 7 ) {\displaystyle 3\cdot 5\cdot k=3\cdot 4{\pmod {7}}}
15 k = 12 ( mod 7 ) {\displaystyle 15\cdot k=12{\pmod {7}}}
1 k = 5 ( mod 7 ) {\displaystyle 1\cdot k=5{\pmod {7}}}

Vyšlo nám, že k je 5, vojáků je tedy 5⋅5+4 = 29.

Další příklad použití

Máme spočíst zbytek čísla 12316803 po dělení číslem 26741, neboli v Z26741. Nejprve musíme mít daný prvočíselný rozklad čísla 26741 = 112·13·17. Protože čísla 112, 13 a 17 jsou navzájem nesoudělná, je podle čínské věty o zbytcích číslo 12316803 v Z26741 určeno jednoznačně svými zbytky po dělení čísly 112, 13 a 17.

Následně využijeme faktu, že aφ(m) = 1 v Zm (Eulerova funkce) a spočteme tyto zbytky:

12316803 = 12110·2880+3 = 123 = 34 v Z121
12316803 = 1212·26400+3 = 123 = 12 v Z13
12316803 = 1216·19800+3 = 123 = 11 v Z17

(protože φ(112) = 110 ,φ(13) = 12 ,φ(17) = 16)

Nyní použijeme čínskou větu o zbytcích, kde m1 = 112, m2 = 13 a m3 = 17. Pak platí:
12316803 = (34 ·M1 · N1) + (12 ·M2 · N2) + (11 ·M3 · N3) v Z26741,
kde

M1 = 13 · 17 = 221
M2 = 112 · 17 = 2057
M3 = 112 · 13 = 1573

N1 = M1−1 = 100−1 = 23 v Z121
N2 = M2−1 = 3−1 = 9 v Z13
N3 = M3−1 = 9−1 = 2 v Z17

Tudíž 12316803 = (34 · 221 · 23) + (12 · 2057 · 9) + (11 · 1573 · 2) = 1728 v Z26741

Inverze 100−1 v Z121 se najde pomocí Euklidova algoritmu:
121 , 100 {\displaystyle 121,100}
100 ,     21 21 1 100 ( mod 121 ) {\displaystyle 100,\ \ 21\Rightarrow 21\equiv -1\cdot 100{\pmod {121}}}
    21 ,     16 16 = 100 4 21 5 100 ( mod 121 ) {\displaystyle \ \ 21,\ \ 16\Rightarrow 16=100-4\cdot 21\equiv 5\cdot 100{\pmod {121}}}
    16 ,         5 5 = 21 16 ( 1 5 ) 100 = 6 100 ( mod 121 ) {\displaystyle \ \ 16,\ \ \ \ 5\Rightarrow 5=21-16\equiv (-1-5)\cdot 100=-6\cdot 100{\pmod {121}}}
        5 ,         1 1 = 16 3 5 ( 5 3 ( 6 ) ) 100 = 23 100 ( mod 121 ) {\displaystyle \ \ \ \ 5,\ \ \ \ 1\Rightarrow 1=16-3\cdot 5\equiv (5-3\cdot (-6))\cdot 100=23\cdot 100{\pmod {121}}}

Literatura

  • RNDr. Jiří Velebil, Ph.D.: Diskrétní matematika a logika, ČVUT Praha 2006

Související články

Autoritní data Editovat na Wikidatech
  • GND: 4470755-1
  • LCCN: sh97002778
  • NLI: 987007558793905171