Čínská věta o zbytcích

Z testwiki
Verze z 21. 12. 2024, 14:11, kterou vytvořil imported>Zagothal ({{Upravit}})
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání

Šablona:Upravit

Čí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 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 m1,m2,,mr jsou navzájem po dvou nesoudělná přirozená čísla, mi2 pro i=1,,r. Potom každá soustava rovnic:

xa1(modm1)
xa2(modm2)
xar(modmr)

má řešení x a toto řešení je určeno jednoznačně v modulo M=m1m2mr.

Algebraická formulace

Nechť m1,m2,,mr jsou navzájem nesoudělná přirozená čísla, mi2 pro i=1,,r. Pak grupy Zm1××Zmr a Zm1mr jsou izomorfní. Izomorfismem je (kromě jiných) zobrazení f:Zm1mrZm1××Zmr dané předpisem f(x)=(xmodm1,,xmodmr).

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)=(a1,,ar) právě tehdy, když x řeší soustavu příslušnou a1,,ar. 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í f1 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

Šablona:Var, Šablona:Var 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 Šablona:Var, Šablona:Var. Pak jsou následující dvě podmínky ekvivalentní:

  1. Soustava x=a1 v Zm1x=a2 v Zm2 má řešení.
  2. Platí d|(a2–a1) (tedy (a2–a1) je dělitelné d).

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

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.

5k+4=a
7l+1=a

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

a=4(mod5)
a=1(mod7)

Proveďme substituci

5k+4=1(mod7)

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

5k=4(mod7)

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

35k=34(mod7)
15k=12(mod7)
1k=5(mod7)

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
100,  21211100(mod121)
  21,  1616=1004215100(mod121)
  16,    55=2116(15)100=6100(mod121)
    5,    11=1635(53(6))100=23100(mod121)

Literatura

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

Související články

Šablona:Autoritní data Šablona:Portály