Kínai maradéktétel

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez

Sablon:Hunfn

  1. Sablon:Label

Kínai maradéktétel (Chinese Remainder Theorem)

Definíció

A **kínai maradéktétel** (CRT) egy matematikai tétel, amely az egész számok moduláris kongruenciájával foglalkozik. Ha egy számot több páratlanul osztható (relatív prím) modullal veszünk kongruenssé, akkor létezik egy egyértelmű megoldás egy adott intervallumban.

Formális Meghatározás

Legyenek:

  • n1,n2,,nk egymással relatív prím számok (gcd(ni,nj)=1 minden ij-re),
  • a1,a2,,ak egész számok.

A kínai maradéktétel állítása szerint a következő kongruenciarendszer: xa1(modn1) xa2(modn2) xak(modnk) mindig egyértelmű megoldással rendelkezik modulo N=n1n2nk.

Lépések a Megoldáshoz

  1. Kiszámítjuk a N=n1n2nk értéket.
  2. Kiszámítjuk minden modul Ni=Nni értékét.
  3. Keresünk egy fordított modult yi-re, amely teljesíti:
  Niyi1(modni)
  1. Kiszámítjuk az x megoldást:
  x=i=1kaiNiyi(modN)

Példa

Kongruenciarendszer: x2(mod3) x3(mod5) x2(mod7)

Megoldás:

  1. N=357=105
  2. N1=1053=35,N2=1055=21,N3=1057=15
  3. Keresünk yi-ket:
  * y1: 35y11(mod3)y1=2,
  * y2: 21y21(mod5)y2=1,
  * y3: 15y31(mod7)y3=1.
  1. Az x megoldása:
  x=(2352)+(3211)+(2151)(mod105)
  x=(140)+(63)+(30)(mod105)
  x=233(mod105)=23

Megoldás: x23(mod105).

Python Implementáció

Az alábbi Python kód implementálja a kínai maradéktételt:

from functools import reduce

def modular_inverse(a, m):
    """
    Kiszámítja a modulinverzt a mod m alatt.
    """
    a = a % m
    for x in range(1, m):
        if (a * x) % m == 1:
            return x
    return None

def chinese_remainder(n, a):
    """
    Kínai maradéktétel megoldása.
    
    Args:
        n: Modulok listája.
        a: Kongruenciák listája.
        
    Returns:
        Az x megoldás, amely megfelel a kongruenciarendszernek.
    """
    N = reduce(lambda x, y: x * y, n)  # Az összes modul szorzata
    x = 0
    for n_i, a_i in zip(n, a):
        N_i = N // n_i
        y_i = modular_inverse(N_i, n_i)
        x += a_i * N_i * y_i
    return x % N

# Példa használat
n = [3, 5, 7]  # Modulok
a = [2, 3, 2]  # Kongruenciák

result = chinese_remainder(n, a)
print("Megoldás:", result)

Kimenet

Megoldás: 23

Alkalmazások

  1. Kriptográfia:
  * RSA titkosítás optimalizálása.
  1. Hálózatok és Időzítés:
  * Moduláris ütemezési problémák megoldása.
  1. Számítógépes algebra:
  * Nagy számítások modularizálása több maradékosztályba.

Előnyök

  • Egyszerű megoldást nyújt kongruenciarendszerekre.
  • Segítségével könnyen kezelhetők nagy számokkal végzett műveletek.

Összegzés

A **kínai maradéktétel** rendkívül hasznos eszköz matematikai, számítástechnikai és kriptográfiai problémák megoldására. A Python implementációval egyszerűen megoldhatók moduláris kongruenciarendszerek, és könnyen érthetővé válik a tétel alkalmazása.

Sablon:-ford-

Sablon:Hunl