primitív gyökér
meghatározás
A primitív gyök (primitív gyök) nevezett szám olyan, hogy minden erejét modulo végigmenni az összes szám viszonylag prím. Matematikailag, ezt feltüntetik a következő: ha ez egy primitív gyök, akkor bármely olyan egész szám, hogy létezik olyan egész szám, hogy a.
Különösen abban az esetben, egy egyszerű mértéke a primitív gyökér fut végig a számokat, hogy.
létezés
Primitív gyök létezik akkor és csak akkor, ha van olyan mértékű páratlan prímszám, vagy kétszer a hatalom elsődleges, valamint azokban az esetekben, ,.
Ez a tétel (amely teljesen bizonyítja Gauss 1801-ben) van bizonyíték nélkül.
Kommunikáció az Euler függvény
Let - primitív gyök. Akkor tudjuk mutatni, hogy a legkisebb olyan szám, amelyre (azaz - jelzi (multiplikatív sorrendben)), ugyanaz. Sőt, az ellenkezője igaz, és ez a tény fogja használni minket az alábbi algoritmus megtalálása primitív gyökerek.
Ezen felül, ha a mod legalább egy primitív gyök, akkor az összes őket (például egy ciklusos csoport elemei a generátor).
Az algoritmus találni egy primitív gyökér
A naiv algoritmus megköveteli egyes vizsgálati idő értékek kiszámításához minden erejét, hogy ellenőrizze, hogy ezek mind különbözőek. Túl lassú algoritmust, alattunk néhány jól ismert tételei számelméleti kapunk egy gyorsabb algoritmust.
Fent kapott tétel kimondja, hogy ha a legkisebb olyan szám, amelyre (azaz - jelzi) is, akkor - primitív gyökér. Mivel minden szám relatív prím, hogy végzett Euler-tétel (), majd ellenőrizze, hogy a primitív gyökér, elegendő annak igazolására, hogy az összes számot kevésbé elégedettek. Ugyanakkor, ha túl lassú algoritmust.
A Lagrange-tétel azt jelenti, hogy a sebesség bármennyi modulo osztja. Így elegendő annak igazolására, hogy minden megfelelő osztója végezzük. Ez egy sokkal gyorsabb algoritmust, de még ennél is többet.
Faktorizálni számokat. Bebizonyítjuk, hogy az előző algoritmus elég ahhoz, hogy a fajok száma. Sőt, még akkor is - bármely valódi osztója. Akkor nyilvánvaló, hogy létezik olyan, hogy, azaz a . Azonban, ha kapnánk:
azaz Még mindig a számok között a forma lesz valami, amelyre a feltételek nem teljesülnek, ha szükséges.
Így a primitív gyökkereső algoritmus ilyen. Találunk faktorizálni azt. Most végiglépdelni a számokat, és minden néző, minden mennyiségben. Ha ez mind ezeket a számokat eltértek, ez a kívánt primitív gyökér.
Óra algoritmus (feltételezve, hogy van egy sor elválasztó, és az exponenciális algoritmus lefut bináris hatványozás, hogy az.), Valamint ezzel egyidejűleg a száma faktorizációhoz ahol - az eredmény, azaz értéke ismeretlen primitív gyökér.
Pro növekedési üteme egyre primitív gyökök ismert, csak becslések. Ismeretes, hogy a primitív gyökerek - egy viszonylag kis mennyiségű. Az egyik a jól ismert értékelések - értékelés Shupa (Shoup), hogy az a feltételezés, az igazság, a Riemann-sejtés, van egy primitív gyökér.
végrehajtás
powmod () függvény a bináris moduláris hatványozás és generátor függvény (int p) - egy primitív gyök (szám faktorizációs végezzük egy egyszerű algoritmust).
Alkalmazkodni ezt a funkciót önkényes, csak add a számítás Euler funkciója egy változó, valamint kiszűrik a nem prím.