Elementární teorie čísel

Editovat
Note

Dělitelnost, Euklidův algoritmus, modulární operace, prvočíselnost a její testování, aplikace teorie čísel (RSA, DSA, lineární a polynomiální kódy).

MB104/MB204

Teorie čísel je odvětví matematiky zabývající se vlastnostmi čísel - zejména celých.
— Wikipedie

Celá čísla jsou množina. Ba co víc je to obor integrity . Platí tedy následující tabulka vlastností:

Note
V následující tabulce:
Vlastnost Sčítání Násobení

Uzavřenost

Asociativita

Komutativita

Neutrální prvek

Inverzní prvek

není grupa, jen monoid

Distributivita

Dělitelnost

Dělitelnost je binární relace nad celými čísly taková, že platí

Celé číslo dělí celé číslo , právě když existuje celé číslo takové, že .

Vlastnosti dělitelnosti

Vlastnost Popis

Všechno dělí nulu

Všechno dělí samo sebe

Tranzitivita

Bezoutova věta

, což se může zdát neintuivní, než si uvědomíš, že celý čísla můžou být záporný.

Dělitelnostní™ pojmy

Největší společný delitěl

je nejvetší takové, že . Zapisuje se taky jako , což vůbec není matoucí.

Nejmenší společný násobek

je nejmenší takové, že .

Nesoudělná čísla (coprimes)

Celá čísla a jsou nesoudělná, právě tehdy když 1 je jejich jediný společný dělitel.

Note
1 je nesoudělná se vším!
Prvočíslo

Číslo , které je dělitelé pouze číslem 1 a sebou samým. Nebo jinými slovy, není násobkem žádných dvou menších celých čísel různých od 1.

Bezoutovy koeficienty

Čísla z věty výše. Počítají se jako vedlejší produkt Euklidova algoritmu.

Inverze vzhledem k násobení

Číslo takové, že .

lze vyřešit jako Bezoutovu rovnici pomocí Euklidova algoritmu.

Eulerova funkce

Počet čísel nesoudělných s v intervalu . Pár zajímavostí:

  • Pokud je prvočíslo, pak .

  • Pokud , kde je prvočíslo, pak .

  • Platí .

  • Třeba .

Euklidův algoritmus

Najde nejmenšího společného dělitele (GCD) dvou celých čísel.

def gcd(a: int, b: int) -> int:
    # `a` must be greater than `b`
    a = a mod b
    if a == 0:
        return b
    return gcd(b, a)
Příklad s 133 a 15

Modulární operace

Líbilo by se nám nějak vyjádřit, že, když dvě celá čísla mají po dělení stejným číslem stejný zbytek, tak jsou si tak nějak "podobná". Téhle relaci se říká kongruence modulo .

Note
Kongruence je relace ekvivalence vztahující se k nějaké operaci. Ne nutně modulo . Hlavní je, aby kongruentní prvky daly ten samý výsledek, když na ně člověk tu operaci použije.

Vlastnosti modulární aritmetiky

Note
V následující tabulce:

Pokud , pak:

Vlastnost Popis

Komutativita

Přidání konstanty

Přidání násobku

,

Násobení konstantou

Násobení modulu konstantou

Dělení modulu konstantou

Sčítání kongruencí

Násobení kongruencí

Fermatova malá věta

Eulerova věta

Rozklad modulu na 2 nesoudělná čísla

Modulární (ve smyslu souvislosti s modulem) pojmy

Čínská zbytková věta

Pro , kde , má soustava kongruencí:

právě jedno řešení v .

Řád čísla

Pro je řád čísla nejmenší takové, že .

Primitivní kořen

Pro je primitivní kořen číslo takové, že jeho řád je roven .

Testování prvočíselnosti

Pro otestování zda je prvočíslo existuje několik přístupů:

  1. Postupné dělení čísly z intervalu (resp. stačí ).

  2. Eratosthenovo síto: Vyrob si seznam čísel a postupně z něj odebírej násobky 2, 3, 5, …​, . To, co ti v seznamu zůstane, jsou prvočísla.

  3. Fermatův test: Pokud Fermatova malá věta platí pro čísla nesoudělná s , pak je nejspíš prvočíslo. (Ano, jen nejspíš.)

Kryptografie

Teorie čísel má své využití zejména v oblasti šifrování a digitálních podpisů.

Problém diskretního logaritmu

Kryptografie mnohdy spoléhá na výpočetní náročnost diskrétního logaritmu.

Pro daný základ a číslo je diskrétní logaritmus číslo takové, že , píšeme .

Kryptografie nepoužívá všechna , ale jen nějakou cyklickou grupu o prvcích, proto , kde je primitivní kořen a .

Rivest-Shamir-Adleman (RSA)

Asymetrická šifra používájící dva klíče: veřejný, který dáš všem, a soukromý, který si necháš pro sebe.

Generování klíčů
  1. Zvol dvě velká, ruzná prvočísla a .

  2. .

  3. Spočítej .

  4. Zvol celé číslo menší než takové, že .

  5. Nalezni číslo takové, že .

  6. Veřejný klíč je , soukromý klíč je .

Šifrování zprávy
  1. Měj zprávu a veřejný klíč . Platí .

  2. Zašifrovaná zpráva je .

Dešifrování zprávy
  1. Měj zašifrovanou zprávu a soukromý klíč .

  2. Původní zpráva je .

ElGamal

Vytvoření klíčů
  1. Zvol prvočíslo .

  2. Spočítej  — primitivní kořen .

  3. Zvol soukromý klíč .

  4. Spočítej .

  5. Tvůj veřejný klíč je , tvůj soukromý je .

Šifrování zprávy
  1. Zvol náhodně .

  2. Spočítej .

  3. Spočítej .

  4. Pošli .

Dešifrování

Digital Signature Algorithm (DSA)

Standard pro digitální podpisy podobný algoritmu ElGamal.

Podepsání
  1. Vyrob hash zprávy.

  2. Zašifruj hash svým soukromým klíčem.

  3. Přilož podpis ke zprávě a zprávu pošli.

Ověření
  1. Vyrob hash zprávy.

  2. Dešifruj přiložený podpis odesílatelovým veřejným klíčem.

  3. Porovnej hashe.

Kódy

Chyby při přenosu se dějí a úplně zabránit se jim nedá. Přenášená informace se ale dá transformovat kódem tak, že poznáme, že k chybě došlo nebo ji dokonce můžeme opravit. Kódy využívají teorie čísel.

Hammingova vzdálenost

Počet bitů, ve kterých se slova (posloupnosti bitů) liší.

-kód

Původní informace má délku bitů. Zakódovaná informace má délku bitů, kde . Přidáním bitů jsme schopní detekovat a opravovat chyby způsobené přenosem informace.

Lineární kódy

Lineární kód je takový kód, kde lineární kombinace dvou kódových slov je opět kódové slovo.

Generující matice

Linární kód lze reprezentovat generující maticí o řádcích a sloupcích, která funguje jako báze vektorového podprostoru kódových slov. Pro každé slovo je kódové slovo.

Matice kontroly parity

Matice o řádcích a sloupcích, kde pro každé kódové slovo platí . Pokud , pak ( je matice identity o velikosti ).

Syndrom slova

Je hodnota . Pokud je nenulový, slovo je chybné. Pokud syndrom připočteme ke všem validním kódovým slovům. Výsledná hodnota z nejméně jedničkami odpovídá původní zprávě za předpokladu, že nastalo nejmenší možné množství chyb.

Polynomiální kódy

Mějme polynom , kde a . Polynomiální kód generovaný polynomem je lineární -kód, jehož kódová slova jsou polynomy stupně menšího než dělitelné .

Note
je množina polynomů, kde .
Zakódování

,

kde je zbytek po dělení polynomu polynomem .

Chybový polynom

Pokud , pak zpráva obsahuje chybu a je chybový polynom.