Ein schneller Algorithmus zur Berechnung des quartischen Restsymbols Diplomarbeit André Weilert Betreuer: Prof. Dr. J. Franke Rheinische Friedrich-Wilhelms-Universität Bonn Mathematisches Institut 12. Dezember 1999 Inhaltsverzeichnis 1 Einleitung 1.1 Themenvorstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 2 2 Grundlagen 5 2.1 Technik des kontrollierten Euklidabstiegs . . . . . . . . . . . . . . . . . . . 5 2.2 Das Reziprozitätsgesetz in Z und ein schneller Algorithmus zur Berechnung des Jacobi-Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 Das 3.1 3.2 3.3 quartische Reziprozitätsgesetz 21 Klassische Formulierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Exkurs: Hilbert-Symbol und Reziprozitätsgesetze . . . . . . . . . . . . . . 25 Alternative Formulierung des quartischen Reziprozitätsgesetzes . . . . . . . 28 4 Algorithmus zur Berechnung des quartischen Restsymbols 35 A Implementierung des Algorithmus 37 A.1 TP-Quellcode der Routine QUARTIC . . . . . . . . . . . . . . . . . . . . . 37 A.2 Laufzeitmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 B Elementarer Beweis des Theorems 3.15 45 Literaturverzeichnis 57 i ii Symboltabelle Notation Bedeutung Z N Q R C Integritätsbereich der ganzen Zahlen Monoid der natürlichen Zahlen: N = {0, 1, 2, . . . } Körper der rationalen Zahlen Körper der reellen Zahlen Körper der komplexen Zahlen Gruppe der Einheiten eines Rings R a|b „a teilt b“ , wobei a, b ∈ R, a 6= 0, Elemente eines faktoriellen Rings R sind „a ist zu b assoziiert“ , d. h. a, b ∈ R sind Ringelemente und unterscheiden sich nur um eine Einheit ε ∈ R× : a = εb gewöhnlicher Absolutbetrag auf C : Für z = x + iy ∈ C mit p 2 2 x, y ∈ R ist |z| = x + y R× a∼b |·| log gcd(a, b) size(x) µ(n) y x oder (y/x) h i y x oder [y/x] (x, y)λ Logarithmus zur Basis 2 ein größter gemeinsamer Teiler im faktoriellen Integritätsbereich R der Ringelemente a, b ∈ R; es gilt aR + bR = gcd(a, b)R. Notationsmißbrauch: Wir betrachten im folgenden nur die nullteilerfreien Hauptidealringe R = Z oder R = Z[i] und benutzen die Notation „gcd(a, b)“ für einen beliebigen Erzeuger des Hauptideals aR + bR (bis auf Assoziierte eindeutig) für x ∈ K, K ein algebraischer Zahlkörper, ist size(x) die Anzahl der Bits, die benötigt werden, um x binär kodiert in üblicher Weise abzuspeichern, d. h. es werden die [K : Q] rationalen Koeffizienten zu einer fest gewählten (kanonischen) Basis von K|Q abgespeichert (gute) obere Schranke für die Bitkomplexität der Multiplikation zweier ganzer Zahlen x, y ∈ Z, die jeweils betragsmäßig durch 2n beschränkt sind Jacobi-Symbol, x, y ∈ Z und x ungerade quartisches Restsymbol, x, y ∈ Z[i], (1 + i) ∤ x Hilbert-Symbol zum Kreisteilungskörper Q(i)|Q an der Stelle λ iii iv Kapitel 1 Einleitung 1.1 Themenvorstellung Thema der vorliegenden Arbeit ist die Entwicklung eines neuen Algorithmus zur asymptotisch schnellen Berechnung des quartischen Restsymbols. Der hier vorgestellte Algorithmus benutzt dazu eine Variante zur asymptotisch schnellen Berechnung des größten gemeinsamen Teilers (g.g.T.) in Z[i], bei der ein Euklidabstieg zum g.g.T. mit der zugehörigen Quotientensequenz der Euklidschritte berechnet wird. Dieser g.g.T.-Algorithmus wurde detailliert in [Wei99] vorgestellt. Bei gegebenen Gaußschen Zahlen x, y ∈ Z[i], deren Real- und Imaginärteile im Betrag durch 2n beschränkt ist, benötigt der erwähnte asymptotisch schnelle g.g.T.-Algorithmus in Z[i] eine Laufzeit von O(µ(n) log n), wobei µ(n) eine (gute) obere Schranke für die Laufzeit der Multiplikation zweier ganzer Zahlen vom Betrag kleiner 2n bezeichnet. (Nach [SS71] ist µ(n) ≤ O(n log n log log n); und dieses theoretische Resultat erlangt auch praktische Bedeutung, wie eine TP-Implementierung dieser Ganzzahlmultiplikation SML zeigt; siehe [SGV94].) Bei der g.g.T.-Berechnung werden bei jedem Euklidschritt xj−1 = qj xj + xj+1 die berechneten Quotienten qj gespeichert, um damit dann schnell das quartische Restsymbol [y/x] zu berechnen. Die Laufzeit des Algorithmus zur Berechnung des quartischen Restsymbols ist, abgesehen von der dazu notwendigen g.g.T.-Berechnung selbst, linear in der Größe des Speicherbedarfs der Quotientensequenz qj , so daß die Laufzeit zur Berechnung des quartischen Restsymbols insgesamt durch O(µ(n) log n) beschränkt ist. 1.2 Aufbau der Arbeit In Kapitel 2 werden wir darstellen, wie man asymptotisch schnell den g.g.T. zweier ganzer Zahlen bzw. zweier Gaußscher Zahlen mittels der Technik des kontrollierten Euklidabstiegs berechnen kann. Dabei werden wir die Theoreme und zentralen Beweise angeben, die aber in der dargestellten Form auch schon bei Schönhage [Sch87] für die g.g.T.Berechnung in Z und bei Weilert [Wei99] für die g.g.T.-Berechnung in Z[i] zu finden sind. Ausgehend von einer solchen schnellen g.g.T.-Berechnung in Z zu den Operanden x, y ∈ Z kann man dann das Jacobi-Symbol (y/x) schnell berechnen, was wir in Abschnitt 2.2 kurz darstellen werden. Dieses Resultat ist auch schon in [SGV94, 7.2.34] angegeben. In Kapitel 3 werden wir dann das quartische Reziprozitätsgesetz in seiner klassischen Formulierung vorstellen. Anschließend führen wir das Hilbert-Symbol ein, um damit eine 1 2 1 Einleitung alternative Formulierung des quartischen Reziprozitätsgesetzes angeben zu können, die analog zur schnellen Berechnung des Jacobi-Symbols eine Grundlage für die Berechnung des quartischen Restsymbols darstellt. Darauf aufbauend können wir in Kapitel 4 unseren schnellen Algorithmus zur Berechnung des quartischen Restsymbols darstellen. Da die alternative Formulierung des quartischen Reziprozitätsgesetzes unmittelbar mit Euklidschritten in Z[i] zusammenhängt, ist in dieser Form der Zusammenhang zur schnellen g.g.T.-Berechnung in Z[i] unmittelbar ersichtlich. In dem vorgestellten schnellen Algorithmus zur Berechnung des quartischen Restsymbols [y/x] wird zuerst der g.g.T. von x und y in Z[i] berechnet, was einen Großteil der Gesamtlaufzeit zur Berechnung von [y/x] ausmacht. Um insgesamt einen besseren Einblick in die Funktionsweise dieses Algorithmus zu erhalten, haben wir vorher in Abschnitt 2.1.3 die schnelle g.g.T.-Berechnung in Z[i] ausführlich vorgestellt. In Anhang A geben wir eine TP-Implementierung unseres Algorithmus zur Berechnung des quartischen Restsymbols an und diskutieren deren Laufzeitverhalten, welches von der Laufzeit zur g.g.T.-Berechnung in Z[i] dominiert wird. Die entsprechende Implementierung der benutzten asymptotisch schnellen g.g.T.-Berechnung in Z[i] ist bei Weilert [Wei99, Anhang A] im Detail dargestellt. Abschließend geben wir in Anhang B noch einen alternativen Beweis für Theorem 3.15 an, welches eine alternative Formulierung des quartischen Reziprozitätsgesetzes ist. Hierbei werden keine umfangreichen zahlentheoretischen Kenntnisse wie z. B. das Hilbert-Symbol vorausgesetzt, statt dessen werden einige elementare Rechnungen durchgeführt. 1.3 Notation Definition 1.1 Der Ring der Gaußschen Zahlen Z[i] ist die Menge C induzierten Addition bzw. Multiplikation. Bemerkung. Z[i] = Z + iZ mit der von Q(i) bzw. Z[i] ist der Ring der ganzen algebraischen Zahlen des Zahlkörpers Q(i). Konvention. In dieser Arbeit bezeichnen wir zu einer komplexen Zahl z ∈ C mit z0 den Realteil und mit z1 den Imaginärteil von z. An den Stellen, wo wir einen Index bei Variablen benutzen, um Elemente einer (endlichen) Folge zu bezeichnen, ist dieses aus dem Kontext ersichtlich und nicht mit oben genannter Konvention zu verwechseln! Definition 1.2 Sei z ∈ Q(i). Dann ist die algebraische Norm der Körpererweiterung Q(i)|Q von z definiert als N(z) := NQ(i)|Q (z) = zz̄ = z02 + z12 , Bemerkung. Sei z ∈ Z[i]. Dann gilt: z = z0 + iz1 , z0 , z1 ∈ Q. (i) N(z) ∈ N. (ii) N(z) = 0 ⇐⇒ z = 0. (iii) N(z) = 1 ⇐⇒ z ∈ Z[i]× = {1, i, −1, −i}. 1.3 Notation 3 Bemerkung. Der Ganzzahlring eines algebraischen Zahlkörpers ist ein Dedekindring, d. h. ein noetherscher, ganz abgeschlossener Integritätsbereich, in dem jedes von 0 verschiedene Primideal maximal ist. Insbesondere ist jedes von 0 verschiedene Ideal eindeutig als Produkt endlich vieler Primideale darstellbar. Definition 1.3 Q Sei K ein Zahlkörper, sei a 6= 0 ein gebrochenes Ideal. Des weiteren sei a = p pvp die eindeutige Produktdarstellung (Zerlegung in Primideale) mit vp ∈ Z und vp = 0 für fast alle p. Die Bewertung von a bzgl. p ist definiert als ( vp wenn a 6= (0), vp(a) := ∞ wenn a = (0). Bemerkung. Z[i] ist ein Dedekindring. Insbesondere ist Z[i] sogar ein euklidischer Ring, also auch ein Hauptidealring (Q(i) hat Klassenzahl 1) sowie ZPE-Ring. 4 1 Einleitung Kapitel 2 Grundlagen 2.1 Technik des kontrollierten Euklidabstiegs In diesem Abschnitt werden wir jeweils einen Algorithmus zur asymptotisch schnellen g.g.T.-Berechnung in Z und in Z[i] angeben. Solch schnelle g.g.T.-Berechnung in Z stellt die Grundlage eines schnellen Algorithmus zur Berechnung des Jacobi-Symbols dar. Des weiteren läßt sich die verwendete Technik zur schnellen g.g.T.-Berechnung in Z auch für eine schnelle g.g.T.-Berechnung in Z[i] verallgemeinern, wie wir darstellen werden. Solch schneller g.g.T.-Algorithmus in Z[i] wird dann als Teil des Algorithmus zur schnellen Berechnung des quartischen Restsymbols benutzt werden (siehe Kapitel 4). Da schnelle g.g.T.-Algorithmen nicht Hauptgegenstand dieser Arbeit sind, stellen wir in diesem Abschnitt 2.1 die wichtigesten Ideen und Resultate (inkl. Beweise) kurz dar, wobei wir die Darstellung der Abschnitte 2.1.2 und 2.1.3 aus [Wei99, Kapitel 3] direkt übernommen haben.1 2.1.1 G.g.T.-Berechnung mit Kofaktoren Sei R ein euklidischer Ring bzgl. | · |, also insbesondere R = Z oder R = Z[i] und | · | der Absolutbetrag auf C. Seien x0 , x1 ∈ R. Ein Euklidschritt zu xj−1 , xj ∈ R mit |xj−1 | ≥ |xj | > 0 ist die Berechnung von qj , xj+1 ∈ R (nicht notwendigerweise eindeutig), so daß xj−1 = qj ·xj + xj+1 und |xj+1 | < |xj |. Zu jedem solchen Euklidschritt erhält man eine Matrix Qj ∈ R2×2 als xj qj 1 xj−1 Qj = , = Qj · , det Qj = −1. 1 0 xj xj+1 Setzt man nun M0 := I und Mj = Qj ·Mj−1 für j ≥ 1, so erhält man x0 xj = Mj · . x1 xj+1 1 (2.1.1) (2.1.2) Wir haben lediglich Verweise angepaßt und einige Details aus [Wei99, Kapitel 3] ausgelassen, die über die g.g.T.-Berechnung in Z und Z[i] hinausweisen. 5 6 2 Grundlagen Bezeichnet man die Koeffizienten der invertierbaren Matrix Mj mit uj+1 uj Mj = , vj+1 vj (2.1.3) so ist u0 = 0, u1 = 1, uj+1 = qj uj + uj−1 und v0 = 1, v1 = 0, vj+1 = qj vj +vj−1 . Man erhält die Darstellung xj = (−1)j (vj x0 − uj x1 ) aus (2.1.2), wobei uj , vj als Kofaktoren von xj zu x0 , x1 genannt werden. Die Koeffizienten dieser Kofaktormatrix Mj lassen sich im Fall R = Z oder R = Z[i] bzgl. | · | abschätzen. Dieses ist wichtig für die asymptotisch schnellen g.g.T.-Algorithmen in Z und Z[i], die wir nun vorstellen werden. 2.1.2 Asymptotisch schnelle g.g.T.-Berechnung in Z Die Grundlage der vorgestellten asymptotisch schnellen g.g.T.-Berechnung bildet Schönhages Technik des kontrollierten Euklidabstiegs. Dabei rechnet man mit Operanden x, y ∈ Z Euklidschritte xj−1 = qj xj + xj+1 , bei denen aber sichergestellt wird, daß der Rest xj+1 bzgl. | · | jeweils größer als eine fest vorgegebene Schranke s bleibt. Somit können die durch eine Folge von solch kontrollierten Euklidschritten berechneten Operanden nicht zu klein werden. Dadurch wird eine rekursive Verwendung des kontrollierten Euklidabstiegs möglich, wobei möglichst viele Schritte des kontrollierten Euklidabstiegs nur mit Anfangsstücken der Operanden gerechnet werden. Konkret läßt sich diese Idee wie folgt darstellen: In Z können wir o. E. x ≥ y > 0 annehmen. Des weiteren seien 2L ≤ x, y < 2L+N . Um nun einen Euklidabstieg von x, y zu kleineren Operanden zu berechnen, welche aber jedenfalls größer als 2L sind, deren Differenz jedoch im Betrag kleiner 2L ist, genügt es, einen Abstieg um N Bits zu berechnen, da x, y durch 2L+N beschränkt sind. Dieses kann man nun aber derart machen, daß man rekursiv zwei Abstiege um jeweils ungefähr N/2 Bits berechnet, wobei man bei hinreichend langen Operanden nur Anfangsstücke geeigneter Größe der Operanden zur Berechnung eines Euklidabstiegs benutzt, um abschließend (nach jedem solchen Abstieg zu vorgegebenen Größenparametern) diese Euklidschritte wieder auf die ganzen Operanden mittels sog. Kofaktoren (Matrix M) zu übertragen. Eine theoretische Grundlage zum kontrollierten Euklidabstieg in Z liefert der folgende Satz 2.1 (Schönhage, [Wei99, Satz 3.1]) Zu gegebenen Zahlen x, y, s ∈ Z mit x, y ≥ s > 0 existieren Zahlen u, v ∈ unimodularen 2 × 2-Matrix a b x u M= , so daß = M· , c d y v Z mit einer eindeutig bestimmt durch die Bedingungen det M = 1, a, b, c, d ≥ 0, u, v ≥ s und |u − v| < s. Darüber hinaus erfüllen die Koeffizienten der Matrix M die Ungleichungen a+b≤ x , s y c+d≤ . s (2.1.4) 2.1 Technik des kontrollierten Euklidabstiegs 7 Jede solche Matrix M ist eindeutig darstellbar als Produkt der erzeugenden Matrizen 1 0 1 1 . und L := H := 1 1 0 1 Beweis. [Sch87, Theorem 2.1] Algorithmus 2.1 Kontrollierter Euklidabstieg in Z algorithm DESCENT(x, y, L) Zu gegebenen x, y, L ∈ Z≥0 mit x, y ≥ 2L berechnet DESCENT Zahlen u, v und eine L invertierbare Matrix M ∈ Z2×2 ≥0 wie in Satz 2.1, so daß u, v ≥ 2 > |u − v| sind. D1: if min(x, y) < 2L+1 then u := x, v := y, M := I; else D2: Finde das minimale N ∈ N mit x, y < 2L+N ; if L ≤ N then T := 0, L1 := L; \\ keine Zerlegung else T := L − (N − 1), L1 := N, zerlege x = x0 + x1 ·2T , \\ Zerlegung 0 ≤ x0 , y0 < 2T y = y0 + y1 ·2T , und setze x := x1 , y := y1 ; D3: H := L1 + ⌊N/2⌋; if min(x, y) < 2H then u′ := x, v ′ := y, M := I; else D4: (u′ , v ′ , M) := DESCENT(x, y, H); \\ |u′ − v ′ | < 2H D5: while |u′ − v ′ | ≥ 2L1 and max(u′ , v ′ ) ≥ 2H do \\ maximal 2 Schleifendurchläufe Berechne einen Euklidschritt zu u′ , v ′ unter Beibehaltung von u′ , v ′ ≥ 2L1 und entsprechender Modifikation von M; if |u′ − v ′ | < 2L1 then u := u′ , v := v ′ ; else D6: (u, v, M ′ ) := DESCENT(u′ , v ′ , L1 ); \\ |u − v| < 2L1 D7: M := M·M ′ D8: if T > 0 then u := u·2T + d·x0 − b·y0 , v := v·2T − c·x0 +a·y0 , a b d −b −1 ; \\ M = wobei M = −c a c d D9: while |u − v| ≥ 2L do \\ maximal 3 Schleifendurchläufe Berechne einen Euklidschritt zu u, v unter Beibehaltung von u, v ≥ 2L und entsprechender Modifikation von M; D10: return (u, v, M). 8 2 Grundlagen Dieser Algorithmus 2.1 zerlegt die Eingabedaten x, y ∈ Z mit 2L ≤ x, y < 2L+N in Anfangsstücke x1 , y1 und Endstücke 0 ≤ x0 , y0 < 2T (für ein geeignetes T , insbesondere erfolgt bei T = 0 keine solche Zerlegung), so daß gilt: x = x0 + 2T x1 , y = y 0 + 2T y 1 . Dann ist 2L−T ≤ x1 , y1 < 2L+N −T . Nun ist der Abstieg von diesen Anfangsstücken um ca. N Bits zu kleineren Zahlen ≥ 2L−T zu berechnen. Dazu werden zwei Abstiege um jeweils N/2 Bits berechnet, wobei die Kofaktoren entsprechend zusammengefügt werden, als ob man einen Abstieg um N Bits berechnet hätte. Mittels dieser Kofaktoren werden dann auch die Endstücke x0 , y0 in D8 modifiziert, so daß man damit einen Abstieg zu den Eingangsgrößen x, y berechnet hat. Abbildung 2.1: Euklidabstieg in x= y= Z : Aufteilung mit Endstücken · · · · · · · · · x0 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · x1 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·y0 · · · · · · · · · · · · · · · · · · · · · · · · · · · y1 · · · · · · · · · · · · · · · · · · T L1 = N L N −1 N Bemerkung. Die Laufzeit für die Berechnung des g.g.T. mittels kontrollierten Euklidabstiegs ergibt sich als O(µ(n) log n) für Zahlen x, y ∈ Z mit size(x), size(y) ≤ n, da der Algorithmus DESCENT(x, y, 0) den g.g.T. von x und y berechnet und die Anzahl der Iterationen in den beiden while-Schleifen D5 und D9 beschränkt ist. (Vorlesung Prof. Schönhage, Computer-Algebra I, Sommersemester 1996 bzw. Manuskript [Sch87].) Bemerkung. Die Technik des kontrollierten Euklidabstiegs hat Schönhage [Sch91] auch übertragen auf die schnelle Reduktion binärer quadratischer Formen. Damit erhält er das Resultat, daß die Reduktion von binären quadratischen Formen ax2 + bxy + cy 2 mit durch 2n beschränkten Ganzzahlkoeffizienten a, b, c in Zeit O(µ(n) log n) möglich ist. 2.1.3 Verallgemeinerung der Technik des kontrollierten Euklidabstiegs auf Z[i] Bei der Berechnung eines Euklidabstiegs in Z[i] kann bei jedem Euklidschritt xj−1 √ = qj xj + xj+1 ein Rest xj+1 berechnet werden, der bzgl. |·| um mindestens den Faktor 1/ 2 kleiner als |xj | ist. Ein solcher Euklidschritt wird als least-remainder-Euklidschritt bezeichnet. Berechnet man nun zu x0 , x1 ∈ Z[i] insgesamt k least-remainder-Euklidschritte und ist xk+1 = 0, so sind die Koeffizienten der Kofaktormatrix aus (2.1.2) beschränkt. 2.1 Technik des kontrollierten Euklidabstiegs 9 Proposition 2.2 ([Wei99, Proposition 2.30]) Für 0 ≤ j ≤ k erhalten wir die folgende Größenbeschränkung der Kofaktoren (Notation wie in Abschnitt 2.1.1, R = Z[i]): √ |vj+1 | ≤ (2 + 2)·|x1 /xj |, √ |uj+1| ≤ (3 + 2)·|x0 /xj |. Beweis. [CC76, Lemma 14, Lemma 15] Um nun die Technik des kontrollierten Euklidabstiegs von Z insbesondere auf den euklidischen Ring Z[i] zu verallgemeinern, benötigen wir in Z[i] analoge Bedingungen zu x, y ≥ 0 sowie zu den Bedingungen in (2.1.4) an u, v aus Satz 2.1. Während in Z die Positivität einer Zahl durch Multiplikation mit einer Einheit −1, +1 erreicht werden kann, ist ein ähnliches Kriterium in anderen Ringen weit weniger natürlich. Deshalb verzichteten wir auf eine entsprechende „Normierung“ mit gewissen Eigenschaften (z. B. Festlegung auf einen Quadranten) bei x, y, u, v. Andererseits ergibt sich bei der Übertragung der Bedingung gZ (u, v) := |u − v| < s nun das Problem, daß man algorithmisch in endlich vielen Schritten die Größenbeschränkung g(u, v) < s erfüllen muß, wobei g mit der Euklidfunktion zusammenhängt. Da wir bei u, v auf eine Normierung verzichtet haben, gestaltete sich die Wahl von g in Z[i] schwieriger als in Z. Wir haben im folgenden Satz 2.3 gZ[i] gewählt als gZ[i] (u, v) := min(|u − v|, |u + v|). Insbesondere benutzen wir hierbei keine Eigenschaften der Einheitengruppe des euklidischen Rings Z[i]. Aufgrund dieser Überlegungen erhalten wir einen Satz für den kontrollierten Euklidabstieg in Z[i] in der vorliegenden Form: Satz 2.3 ([Wei99, Satz 3.2]) Seien x, y ∈ Z[i] und s ∈ N, s ≥ 1, mit |x|, |y| ≥ s. Dann existieren u, v ∈ Z[i] und eine Matrix M ∈ Z[i]2×2 , a b x u M= , so daß = M· , (2.1.5) c d y v wobei det M ∈ {−1, +1} und 2 max(|x|, |y|) > |u|, |v| ≥ s > min(|u + v|, |u − v|) (2.1.6) gilt und die Koeffizienten der Matrix M in folgender Weise beschränkt sind: max(|x|, |y|) 5 . |a|, |b|, |c|, |d| ≤ 4 + √ · s 2 (2.1.7) Bemerkung. Den Beweis dieses für den schnellen g.g.T.-Algorithmus zentralen Satzes werden wir konstruktiv führen, da wir später im Algorithmus genau so wie im Beweis Reduktionsschritte berechnen werden. Ein reiner Existenzbeweis hätte für die Theorie genügt, hätte aber eine detaillierte Betrachtung der Berechnungsmöglichkeiten für die Reduktionsschritte an anderer Stelle erforderlich gemacht. 10 2 Grundlagen Beweis. Sei o. E. |x| ≥ |y| ≥ s > 0. Wir setzen zunächst u := x, v := y und M := I. Wenn nun (2.1.8) min(|u − v|, |u + v|) < s ist, haben wir eine Darstellung wie in (2.1.5) ermittelt, bei der (2.1.6) erfüllt ist. Anderenfalls ist (2.1.9) min(|u − v|, |u + v|) ≥ s, und wir berechnen einen least-remainder-Euklidschritt zu den Operanden u, v : 1 u = qv + r mit |r| ≤ √ |v| < |v| ≤ |u|. 2 (2.1.10) Ist dabei |r| ≥ s, so setzen wir q 1 M := M· ; 1 0 und benennen die Variablen wie folgt um: uneu := v, vneu := r. Dann gilt: uneu x , max(|x|, |y|) > |uneu |, |vneu | ≥ s. = M· vneu y Sofern nun bei diesen neu berechneten Operanden (nun wieder als u, v bezeichnet) Bedingung (2.1.9) immer noch erfüllt ist, berechnen wir weitere Euklidschritte wie gerade spezifiziert. Da Z[i] euklidisch ist, ist die Menge {|z| : z ∈ Z[i], |z| < |y|} endlich und enthält die Null. Also muß nach endlich vielen Schritten in (2.1.10) ein Rest |r| < s auftreten. Falls dann |r − v| ≥ s ist, setze ε := −1. Anderenfalls ist |r − v| < s ≤ |v|. Dann ist aber |r + v| = |2v − (v − r)| ≥ 2|v| − |v − r| ≥ |v| ≥ s. | {z } ≤|v| Setze in diesem Fall ε := 1. Es schreibt sich (2.1.10) als u = (q − ε)v + (r + εv), wobei ε ∈ {−1, +1} so gewählt wurde, daß |r + εv| ≥ s ist (siehe Abbildung 2.2). Dann setzen wir q−ε 1 M := M· 1 0 und benennen die Variablen wie folgt um: uneu := v, vneu := r + εv. Es gilt: 1 |uneu | = |valt |, |vneu | = |r + εvalt | ≤ 1 + √ |valt | < 2|valt |; 2 2.1 Technik des kontrollierten Euklidabstiegs 11 und da |ualt|, |valt | ≤ max(|x|, |y|) waren, sind |uneu |, |vneu | < 2 max(|x|, |y|). Des weiteren ist x uneu . = M· y vneu Bemerkung: Ein weiterer Euklidschritt zu u = uneu , v = vneu wird dann aber nicht mehr gerechnet, da |u − εv| = |r + εvalt − εvalt | = |r| < s ist, so daß damit Bedingung (2.1.8) erfüllt ist, d. h. wir haben eine geeignete Darstellung wie in (2.1.5) berechnet, bei der die Bedingungen aus (2.1.6) erfüllt sind. Bezeichnung: Solch eine Modifikation des Rests r zu r + εv bezeichnen wir als Größenanpassung nach einem Euklidschritt. Abbildung 2.2: Größenanpassung nach einem Euklidschritt 6 1 r k - ) r−y r+y 1y s Wir berechnen also insgesamt k Euklidschritte, wobei lediglich beim k-ten Euklidschritt evtl. eine Größenanpassung vorgenommen wurde. Zu jedem berechneten Quotienten qj , 1 ≤ j ≤ k, bei solch einem Euklidschritt erhalten wir eine Matrix q̂j 1 Q̂j = , 1 0 wobei q̂j := qj für 1 ≤ j < k und q̂k = qk − ε mit ε ∈ {−1, 0, +1} wie oben ist. Dabei ist ε = 0 äquivalent dazu, daß im k-ten Euklidschritt keine Größenanpassung vorgenommen worden ist. Nun ist die Matrix M ein Produkt der Matrizen Q̂j , 1 ≤ j ≤ k. Da det Q̂j = −1 ist, ist folglich det M = (−1)k . Es ist noch die Größenabschätzung für die Koeffizienten der berechneten Matrix M zu zeigen. Für 1 ≤ j < k ist Q̂j = Qj die Matrix aus (2.1.1). x u = Q1 ·Q2 · . . . ·Qk−1 ·Q̂k · . y v 12 2 Grundlagen Das Produkt der Matrizen Q1 · . . . ·Qk−1 ist nach (2.1.3) die Matrix uk uk−1 , Mk−1 = vk vk−1 deren Koeffizienten in Proposition 2.2 abgeschätzt wurden. Nach dem k-ten Euklidschritt wird zur Berechnung der Matrix M die Matrix Mk−1 noch mit Q̂k multipliziert: uk uk−1 qk − ε 1 uk+1 − εuk uk M = Mk−1 ·Q̂k = · = . vk vk−1 1 0 vk+1 − εvk vk Man erhält mit Hilfe von Proposition 2.2 eine Abschätzung für die Koeffizienten von M : |uk+1 − εuk | ≤ |uk+1| + |uk | √ √ x0 x0 x0 x0 xk < (3 + 2)· + = (3 + 2)· + · xk xk−1 xk xk xk−1 √ x0 x0 1 5 ≤ (3 + 2)· 1 + √ · = 4 + √ · , xk xk 2 2 xk ≤ √1 für k ≥ 2 ist. Die Abschätzung von |vk+1 − εvk | verläuft ganz analog. da 2 xk−1 Aus |xk | ≥ s folgt nun die behauptete Größenabschätzung (2.1.7). Proposition 2.4 ([Wei99, Proposition 3.3]) Berechnet man gemäß Satz 2.3 zu x, y ∈ Z[i] und s = 1 den Abstieg zu u, v ∈ Z[i], so gilt u ∼ v ∼ gcd(x, y). Beweis. Wegen min(|u − v|, |u + v|) < 1 erhält man u = εv mit ε ∈ {−1, +1}. Die Behauptung folgt nun mittels Teilbarkeitsüberlegungen direkt aus den Darstellungen u x u x −1 , = sowie M · = M· εu y εu y da M eine in Z[i]2×2 invertierbare Matrix ist. Damit haben wir die Idee des kontrollierten Euklidabstiegs auf Z[i] übertragen und den Zusammenhang zur g.g.T.-Berechnung dargestellt, wenn der dabei vorkommende Größenparameter s = 1 ist. Darauf aufbauend können wir nun den asymptotisch schnellen g.g.T.Algorithmus angeben, dessen Korrektheit wir anschließend beweisen werden. Die diesem Algorithmus zugrundeliegende Idee ist dieselbe wie bei dem Algorithmus DESCENT in Z. Sofern die Operanden hinreichend lang sind, werden Anfangsstücke abgetrennt und lediglich mit diesen erst einmal ein kontrollierter Euklidabstieg berechnet. Wenn dabei ein Abstieg um maximal N Bits berechnet werden soll, wird dieser rekursiv aufgeteilt in zwei Abstiege um jeweils ungefähr N/2 Bits, die mittels Multiplikation der jeweiligen Kofaktormatrix zusammengefügt und schließlich auf die Operanden in voller Länge übertragen werden. 2.1 Technik des kontrollierten Euklidabstiegs 13 Algorithmus 2.2 Kontrollierter Euklidabstieg in Z[i] algorithm CIDESCENT(x, y, L) Zu gegebenen x, y ∈ Z[i], L ∈ N mit |x|, |y| ≥ 2L berechnet CIDESCENT Zahlen u, v und eine invertierbare Matrix M ∈ Z[i]2×2 wie in Satz 2.3, so daß x u = M· und |u|, |v| ≥ 2L > min(|u − v|, |u + v|). y v C1: if min(|x|, |y|) < 2L+1 then u := x, v := y, M := I; \\ weiter bei C9 else C2: Finde das minimale N ∈ N mit |x|, |y| < 2L+N ; if L ≤ N + 5 then T := 0, L1 := L; \\ keine Zerlegung else L1 := N + 5, T := L + 1 − L1 , zerlege x = x′ + x′′ ·2T , y = y ′ + y ′′ ·2T , 1 so daß 2L1 ≤ |x′′ |, |y ′′ | < 2L1 +N −1 , |x′ |, |y ′| ≤ 2T + 2 , und setze x := x′′ , y := y ′′ ; C3: H := L1 + ⌊N/2⌋; if min(|x|, |y|) < 2H then u′ := x, v ′ := y, M := I; else C4: (u′ , v ′ , M) := CIDESCENT(x, y, H); \\ min(|u′ − v ′ |, |u′ + v ′ |) < 2H C5: while min(|u′ − v ′ |, |u′ + v ′ |) ≥ 2L1 and max(|u′|, |v ′|) ≥ 2H do \\ max. zweimal Berechne einen Euklidschritt zu u′, v ′ unter Beibehaltung von |u′ |, |v ′| ≥ 2L1 und entsprechender Modifikation von M; if min(|u′ − v ′ |, |u′ + v ′ |) < 2L1 then u := u′ , v := v ′ ; else C6: (u, v, M ′ ) := CIDESCENT(u′, v ′ , L1 ); \\ min(|u − v|, |u + v|) < 2L1 C7: M := M·M ′ C8: if T > 0 then u := u·2T + det M·(d·x′ − b·y ′), \\ det M ∈ {−1, +1} T ′ ′ v := v·2 + det + a·y ), M·(−c·x a b d −b −1 wobei M = ; \\ M = det M · −c a c d L C9: while min(|u − v|, |u + v|) ≥ 2 do \\ maximal 5 Schleifendurchläufe Berechne einen Euklidschritt zu u, v unter Beibehaltung von |u|, |v| ≥ 2L und entsprechender Modifikation von M; C10: return (u, v, M). Proposition 2.5 ([Wei99, Proposition 3.5]) Algorithmus 2.2 ist korrekt, d. h. zu gegebenen Gaußschen Zahlen x, y ∈ Z[i] berechnet der Algorithmus Gaußsche Zahlen u, v ∈ Z[i] und eine Matrix M ∈ Z[i]2×2 gemäß Satz 14 2 Grundlagen 2.3. Darüber hinaus ist die Anzahl der Euklidschritte in den while-Schleifen in C5 bzw. C9 unabhängig von den Eingabegrößen beschränkt durch 2 bzw. 5. Beweis. (i) Sobald bei einem der Euklidschritte in den while-Schleifen C5 (Variablen u′ , v ′ ) oder C9 (Variablen u, v) eine Größenanpassung vorgenommen worden ist, ist danach jeweils die Minimumbedingung bei C5 oder C9 nicht mehr erfüllt, so daß die while-Schleife kein weiteres Mal durchlaufen wird. (ii) Wir berechnen nur least-remainder-Euklidschritte mit ggf. anschließender Größenanpassung. Wenn in solch einem Euklidschritt eine Größenanpassung erfolgt ist und wir weitere Euklidschritte rechnen, wird diese Größenkorrektur im nächsten Euklidschritt wieder rückgängig gemacht, so daß wir die Größenanpassung (bis auf ggf. die Größenanpassung beim letzten Euklidschritt) nicht berücksichtigen müssen, um die Matrixkoeffizienten abzuschätzen. Somit sind in C8 bzw. C10 die Matrixkoeffizienten geeignet beschränkt. (iii) Sei o. E. |x| ≥ |y|. Wenn in C1 zu C9 verzweigt wird, dann ist |y| < 2L+1 . Bei jedem Euklidschritt wird der Rest um mindestens den Faktor √12 betragsmäßig gegenüber |y| kleiner, also erhält man nach zwei Schritten einen Rest echt kleiner 2L , so daß dann eine Größenanpassung vorgenommen wird. Dann ist aber die Abbruchbedingung der while-Schleife C9 erfüllt. In allen anderen Fällen verzweigt C1 nicht zu C9, also ist in C2 immer N ≥ 2. (iv) Wir zeigen nun, daß in der while-Schleife C5 die Anzahl der Iterationen durch 2 beschränkt ist. Mit x̃, ỹ seien hierbei im Fall T > 0 die Anfangsstücke x′′ , y ′′ der Eingabezahlen x, y bezeichnet, dabei sei ggf. nach Umbenennung |x̃| ≥ |ỹ|; im Fall T = 0 werden x̃ := x, ỹ := y gesetzt. Wir berechnen insgesamt einen Abstieg um N Bits, von L1 + N zu L1 Bits bei x̃, ỹ. Dazu berechnen wir zuerst einen Abstieg um ⌈N/2⌉ Bits zu H := L1 + ⌊N/2⌋ Bits in C4 und C5. Wenn |ỹ| < 2H in C3 ist, berechnen wir keinen Abstieg mittels CIDESCENT; wir 1 erhalten nach einem Standard-Euklidschritt einen Rest r mit |r| ≤ 2H− 2 < 2H . Ist |r| ≥ 2L1 , so wird die while-Schleife nicht erneut durchlaufen, da max(|ỹ|, |r|) < 2H ist. Ist dagegen |r| < 2L1 , so wird eine Größenanpassung mit y vorgenommen (u′ := y und v ′ := r + εy mit ε ∈ {−1, +1}, so daß |v ′ | ≥ |y|). Dann ist |u′ − εv ′| < 2L1 , so daß die while-Schleife nicht erneut durchlaufen wird. Ist hingegen CIDESCENT in C4 durchlaufen worden, dann existiert ein ε ∈ {−1, +1}, so daß |u′ + εv ′| < 2H ist. Berechnet man dann einen Euklidschritt, so erhält man einen Rest kleiner 2H . Entweder ist eine Größenanpassung beim Rest erforderlich, so daß dann die while-Schleife nicht erneut durchlaufen wird, oder aber es wird ein weiterer Euklidschritt berechnet. Dieser liefert dann einen Rest kleiner 2H , bei dem ggf. eine Größenanpassung vorgenommen wird. Nach einer Größenanpassung wird die while-Schleife nicht erneut durchlaufen, und falls keine Größenanpassung vorgenommen wird, sind die beiden Zahlen kleiner als 2H , so daß wegen der Maximumbedingung keine weitere Iteration erfolgt. Ist min(|u′ − v ′ |, |u′ + v ′ |) < 2L1 ein Abbruchkriterium bei der while-Iteration in C5, dann ist die Bedingung in der unmittelbar folgenden if-Abfrage erfüllt, so daß kein zweiter Abstieg CIDESCENT (C6) gerechnet wird. Ist T = 0, dann ist die Bedingung in C8 nicht erfüllt. Weiterhin ist L = L1 , so daß dann in C9 die Bedingung der while-Schleife nicht erfüllt ist, so daß kein Durchlauf erfolgt. 2.1 Technik des kontrollierten Euklidabstiegs Abbildung 2.3: Euklidabstieg in T 15 Z[i] : Aufteilung mit Endstücken L1 = N + 5 N −1 L N (v) Sei nun der Fall T > 0 betrachtet, also sei L > N + 5. Es sind T und L1 so gewählt, daß T + L1 = L + 1 ist. In den Schritten C3–C7 berechnen wir den Abstieg von den Anfangsstücken x′′ , y ′′ zu ũ, ṽ, wobei ein ε ∈ {−1, +1} existiert, so daß gilt: |ũ|, |ṽ| ≥ 2L1 > |ũ + εṽ|. (2.1.11) Nach Schritt C8 sind dann u, v berechnet als u := ũ·2T + det M·(d·x′ − b·y ′), (2.1.12) v := ṽ·2T + det M·(−c·x′ + a·y ′). Wegen |x′′ |, |y ′′ | < 2L1 +N −1 und wegen der Mindestgröße von ũ, ṽ folgt, daß die Koeffizienten der Reduktionsmatrix M von x′′ , y ′′ zu ũ, ṽ wie in Satz 2.3 betragsmäßig durch L1 +N −1 5 2 4+ √ · < 2N +2 L1 2 2 nach oben beschränkt sind, da nach der Anmerkung in (ii) eine ggf. vorgenommene Größenanpassung durch Berechnen eines weiteren least-remainder-Euklidschritts 1 rückgängig gemacht wird. Des weiteren ist |x′ |, |y ′| ≤ 2T + 2 , so daß wir mit (2.1.12) die Abschätzung erhalten: 1 |u|, |v| > 2L1 +T − 2·2N +2 ·2T + 2 = 2L1 +T − 2L1 +T −1.5 = 2L (2 − 2−0.5 ) > 2L , da L1 = N + 5 und T + L1 = L + 1 ist. Damit können |u|, |v| also nicht zu klein werden. Andererseits erhält man aus (2.1.12) mit der Größenbeschränkung (2.1.11): |u + εv| = |(ũ + εṽ)·2T + det M·(d − εc)x′ + det M·(−b + εa)y ′| 1 < 2L1 +T + 4·2N +2 ·2T + 2 1 ≤ 2L+1 + 2N +T +4.5 = 2L+1 (1 + 2− 2 ) < 3.5·2L . Damit ist die Anzahl der Euklidschritte in C9 durch 5 beschränkt, denn nach einem Euklidschritt ist ein Operand betragsmäßig kleiner als 3.5·2L , und nach maximal 1 vier weiteren Euklidschritten ist der Rest betragsmäßig kleiner (2− 2 )4 ·3.5·2L < 2L , so daß spätestens dann eine Größenanpassung erfolgt. Nach einer solchen Größenanpassung ist anschließend die while-Bedingung nicht mehr erfüllt, so daß keine weitere Iteration ausgeführt wird. 16 2 Grundlagen Proposition 2.6 ([Wei99, Proposition 3.6]) Sei mit t(l, n) die maximale Laufzeit von CIDESCENT(x, y, L) für L ≤ l und beliebige Gaußsche Zahlen |x|, |y| < 2L+N , wobei N ≤ n − 5 ist, bezeichnet. Es gilt t(l, n) ≤ O(·µZ[i](l + n)· log(n + 1)). Dabei bezeichnet µZ[i] (l + n) eine glatte obere Zeitbeschränkung für die Multiplikation zweier Gaußscher Zahlen vom Betrag kleiner 2l+n ; es gilt µZ[i] (s) = O(µ(s)). Beweis. Mit Ausnahme der rekursiven Aufrufe in C4 und C6 führt der Algorithmus nur eine beschränkte Anzahl von arithmetischen Operationen mit Gaußschen Zahlen vom Betrag kleiner 2l+n aus. Der Fall L > N + 5 wird zurückgeführt auf ein Problem mit Parametern L1 = N + 5, N1 = N − 1, so daß wir die Abschätzung t(l, n) ≤ t(n, n) + O(·µZ[i] (l + n)) (2.1.13) erhalten. Die divide-and-conquer-Struktur des Algorithmus ermöglicht die Abschätzung t(2n, 2n) ≤ 2t(n, n) + O(·µZ[i] (4n)). (2.1.14) (Man berechnet insgesamt einen Abstieg um 2n Bits beim Betrag der Operanden, indem man bis zu zwei Abstiege jeweils um n Bits rekursiv berechnet. Bei diesen rekursiven Aufrufen werden jeweils Endstücke abgeschnitten, so daß jeweils eine Laufzeit von maximal t(n, n) benötigt wird.) Aus (2.1.13) und (2.1.14) erhält man die Laufzeitabschätzung t(l, n) ≤ O(·µZ[i](l + n)· log(n + 1)). Bemerkung. Diese Laufzeit mit l = 0 ist auch eine obere Schranke für die Laufzeit der g.g.T.-Berechnung von Gaußschen Zahlen x, y mit |x|, |y| < 2n , da CIDESCENT(x, y, 0) nach Proposition 2.4 den g.g.T. von x, y berechnet. 2.2 2.2.1 Das Reziprozitätsgesetz in Z und ein schneller Algorithmus zur Berechnung des Jacobi-Symbols Das quadratische Reziprozitätsgesetz Das quadratische Reziprozitätsgesetz besagt, wann eine ungerade Primzahl p ein Quadrat modulo einer ungeraden Primzahl q, p 6= q, ist. Seine Entdeckung wird Legendre zugeschrieben; allerdings benutzte er zur Begründung einen seinerzeit (1785) unbewiesenen Satz über Primzahlen in arithmetischen Progressionen. Dem knapp neunzehnjährigen Gauß gelang erstmals ein vollständiger Beweis des quadratischen Reziprozitätsgesetzes. Im Laufe der Zeit fügte er sieben neue Beweise hinzu. Auch wenn sich das quadratische Reziprozitätsgesetz explizit und elementar formulieren läßt, so ist es doch der Zahlentheorie zuzuordnen. Mit zahlentheoretischen Mitteln lassen sich dann auch höhere Reziprozitätsgesetze angeben. 2.2 Das Reziprozitätsgesetz in Z und ein schneller Algorithmus zur Berechnung des Jacobi-Symbols 17 „Von der Entdeckung des Reziprozitätsgesetzes kann man die moderne Zahlentheorie datieren. Seiner Form nach gehört es noch der Theorie der rationalen Zahlen an, es läßt sich aussprechen als eine Beziehung lediglich zwischen rationalen Zahlen; jedoch weist es seinem Inhalt nach über den Bereich der rationalen Zahlen hinaus. [. . .] Die Entwicklung der algebraischen Zahlentheorie hat nun wirklich gezeigt, daß der Inhalt des quadratischen Reziprozitätsgesetzes erst verständlich wird, wenn man zu den allgemeinen algebraischen Zahlen übergeht, und daß ein dem Wesen des Problems angemessener Beweis sich am besten mit den höheren Hilfsmitteln führen läßt, während man von den elementaren Beweisen sagen muß, daß sie vielmehr den Charakter einer nachträglichen Verifikation besitzen.“ E. Hecke [Hec23, S. 59] Legendre definierte für eine ungerade Primzahl q ∈ Werten in {−1, +1} durch q−1 p ≡ p 2 mod q q N und p ∈ Z ein Symbol (p/q) mit und formulierte das Theorem 2.7 (Quadratisches Reziprozitätsgesetz) Seien p, q ∈ N verschiedene ungerade Primzahlen. Dann gilt p−1 q−1 p q · = (−1) 2 2 . q p Darüber hinaus gelten das erste und zweite Ergänzungsgesetz: p−1 p2 −1 −1 2 = (−1) 2 , = (−1) 8 . p p Eine Verallgemeinerung des Legendre-Symbols ist das Jacobi-Symbol (siehe dazu z. B. [Coh96, § 1.4], [Leu96, § 5.2], [Neu92, VI.8.4]): Definition 2.1 Für a ∈ Z, b ∈ N, b ungerade, ist das Jacobi-Symbol a wie folgt definiert: Zerlege b Q b = j∈J pj in positive Primfaktoren pj (nicht notwendigerweise verschieden, pj 6= 2). Setze a Y a := , b pj j∈J wobei a pj für a 6= 0 das bereits definierte Legendre-Symbol ist. Man zeigt, daß die Formeln von Theorem 2.7 wahr bleiben, wenn p und q lediglich teilerfremde positive ungerade Zahlen sind, nicht notwendigerweise prim ([Leu96, § 5.3, Satz 3 und 5]). Eine detaillierte Schilderung der geschichtlichen Entwicklung des quadratischen Reziprozitätsgesetzes ist in [Lem99, Chapter 1: The Genesis of Quadratic Reciprocity] zu finden. 18 2 Grundlagen Bemerkung. Eine weitere Verallgemeinerung des Legendre-Symbols (und des JacobiSymbols) ist das Jacobi-Kronecker-Symbol a , welches allgemein für b ∈ Z definiert ist b (siehe [Coh96, § 1.4]). 2.2.2 Schönhages schneller Algorithmus zur Berechnung des Jacobi-Symbols Schönhage [Sch87] hat einen schnellen Algorithmus zur Berechnung des Jacobi-Symbols entwickelt, der auf dem Algorithmus zur schnellen g.g.T.-Berechnung in Z (siehe [Sch71] bzw. [SGV94, pp. 239–244]) basiert. Die Idee jenes Algorithmus zur Berechnung des Jacobi-Symbols wollen wir kurz vorstellen, da wir anschließend einen ähnlichen Algorithmus zur Berechnung des quartischen Restsymbols entwickeln werden. y Seien x, y ∈ N, x ≥ 3 ungerade und 0 < y < x. Die Berechnung des Jacobi-Symbols x schließt einen Test ein, ob x und y teilerfremd sind. Zuerst wird dazu der g.g.T. von x und y mit einem asymptotisch schnellen g.g.T.-Algorithmus in Z berechnet, wobei die Quotienten q1 , . . . , qk der Euklidschritte für eine spätere Berechnung aufbewahrt werden. Sei nun der g.g.T. gleich 1 (andernfalls ist (y/x) = 0). Dann kann das Jacobi-Symbol (y/x) aus den qj in linearer Zeit berechnet werden. Die berechneten Euklidschritte (des kontrollierten Euklidabstiegs bei der g.g.T.-Berechnung) sind dann in der Art von xj−1 = qj xj + xj+1 , 1 ≤ j ≤ k, wobei x0 := x, x1 := y, xk = xk+1 = 1. (2.2.1) rj ≡ xj mod 4 (2.2.2) Insbesondere endet die g.g.T.-Berechnung nicht, wenn man bei einem Euklidschritt Rest 0 erhält, sondern der letzte Euklidschritt wird derart modifiziert, so daß man Rest xk+1 = 1 erhält, was möglich ist, da xk = 1 ist. x0 sowie xk und xk+1 sind ungerade, so daß die Nachbarn jedes geraden xj ungerade sein müssen. Es genügt, all diese Größen modulo 4 zu kennen. Die reduzierten Reste können einfach aus den Quotienten qj mittels (2.2.1), modulo 4 genommen, berechnet werden. Also werden lediglich die unteren beiden Bits jedes qj benötigt. Die Regeln zur Berechnung des Jacobi-Symbols sind nun präzisiert in Theorem 2.8 (Schönhage, 1987) Seien x, y ∈ N, x ≥ 3 ungerade, 0 < y < x, gcd(x, y) = 1. Des weiteren sei ein Euklidabstieg wie in (2.2.1) berechnet und Restklassen rj ∈ Z/4Z wie in (2.2.2) entsprechend definiert. Sei xj−1 ≥ 3 ungerade. Wenn xj ungerade ist, dann gilt xj xj+1 = ·s(rj−1, rj ), (2.2.3) xj−1 xj wobei s(1, 1) = s(1, 3) = s(3, 1) = 1, s(3, 3) = −1 ist. Wenn xj gerade ist, dann ist xj+1 ungerade, und es gilt xj+2 wenn rj = 0, xj+1 xj = (2.2.4) xj+2 ·t(r , q ) wenn r = 2, xj−1 j+1 j j xj+1 ( −1 für q ≡ 2 oder q ≡ r mod 4, wobei t(r, q) = +1 sonst. 2.2 Das Reziprozitätsgesetz in Z und ein schneller Algorithmus zur Berechnung des Jacobi-Symbols Beweis. [Sch87, Theorem 7.1] 19 Bemerkung. Gleichung (2.2.3) entspricht direkt der Formulierung des quadratischen Reziprozitätsgesetzes für das Jacobi-Symbol, während die Reduktion (2.2.4) nicht sehr y bekannt ist. Für eine Berechnung des Jacobi-Symbols x bei geradem y wird häufig das Ergänzungsgesetz 2 = −1 ⇐⇒ x ≡ 3 oder x ≡ 5 mod 8 x verwendet. Bei solchem Vorgehen ist allerdings nicht bekannt, wie das Jacobi-Symbol unter Benutzung des asymptotisch schnellen g.g.T.-Algorithmus schnell aus der Quotientensequenz berechnet werden könnte, da nach Anwendung des zweiten Ergänzungsgesetzes k ′ 2 y = x x x y (y = 2k y ′ , 2 ∤ y ′) ein Operand y ′ auftritt, der so nicht in der Restsequenz vorkommt und somit eine weitere kanonische Verwendung der Quotientensequenz verhindert. Es ist also bislang nicht bekannt, ob sich das Jacobi-Symbol auch asymptotisch schnell berechnen läßt, wenn man zur Berechnung insbesondere das zweite Ergänzungsgesetz anwendet. Darüber hinaus genügt es zur Bestimmung des obigen k nicht, y modulo 4 zu kennen, da im Fall y ≡ 0 mod 4 das k nicht aus r := y mod 4 bestimmt werden kann. Da die g.g.T.-Berechnung positiver ganzer Zahlen vom Betrag kleiner 2n in O(µ(n) log n) Laufzeit möglich ist, wobei die berechneten Quotienten der einzelnen Euklidschritte für eine spätere Verarbeitung aufbewahrt werden, ist also nach obigen Überlegungen und nach Theorem 2.8 aus dieser Quotientensequenz mit Arithmetik in Z/4Z-Restklassen das Jacobi-Symbol zu berechnen, d. h. wir haben das folgende Theorem (vgl. [SGV94, 7.2.34]) bewiesen: Theorem 2.9 Das Jacobi-Symbol zweier positiver ganzer Zahlen kleiner 2n kann in O(n(log n)2 log log n) Laufzeit berechnet werden. Bemerkung. Bei diesem hier skizzierten Algorithmus zur Berechnung des Jacobi-Symbols aus der Quotientensequenz ist es von großer Wichtigkeit, daß die Operationen lediglich in einem Restklassenring von Z (hier Z/4Z) ausgeführt werden. Anderenfalls würde der Algorithmus im allgemeinen mindestens eine in n quadratische Laufzeit erreichen, da die aus der Quotientensequenz (in der Regel kleine Quotienten, vgl. Knuth [Knu98, 4.5.2, High-precision calculation]) berechneten Operanden bis zu n Bits lang werden können, aber insgesamt auch O(n) Quotienten abgespeichert worden sind. Bemerkung. Der hier vorgestellte Algorithmus zur Berechnung des Jacobi-Symbols ist asymptotisch schneller als die beiden in [MS98] vorgestellten Algorithmen, die für betragsmäßig durch 2n beschränkte Operanden beide eine Laufzeit von O(n2/ log n) in der nicht-parallelisierten Variante erreichen. 20 2 Grundlagen Kapitel 3 Das quartische Reziprozitätsgesetz 3.1 Klassische Formulierung C. F. Gauß (1777–1855) hat als erster das quartische (biquadratische) Reziprozitätsgesetz formuliert und das zweite Ergänzungsgesetz bewiesen. Es ist nicht bekannt, wann Gauß das quartische Reziprozitätsgesetz entdeckt hat; es wird vermutet, daß dieses einige Zeit vor seinen Publikationen einiger Resultate in den Jahren 1828 und 1832 geschehen ist. („Theoria residuorum biquadraticorum. Commentatio prima.“ , Commentationes Soc. regiae sci. Göttingen. Vol. VI, 1828; „Theoria residuorum biquadraticorum. Commentatio secunda.“ , Commentationes Soc. regiae sci. Göttingen. Vol. VII, 1832; beide Arbeiten sind in deutscher Übersetzung zu finden in [Gau89].) Gauß schrieb zum quartischen Reziprozitätsgesetz in einem Brief am 30. Mai 1828 an Dirichlet: „Die ganze Untersuchung, deren Stoff ich schon seit 23 Jahren vollständig besitze, die Beweise der Haupttheoreme aber (zu welchen das in der ersten Commentatio noch nicht zu rechnen ist) seit etwa 14 Jahren, . . . “ C. F. Gauß, Werke II, S. 516 Jacobi bewies seinerseits das quartische Reziprozitätsgesetz 1836/37 in seiner Königsberger Vorlesung. Die ersten publizierten Beweise gehen auf Eisenstein (1844/45) zurück. Weitere historische Details zur Geschichte des quartischen Reziprozitätsgesetzes sind in [Lem99, Chapter 6. Quartic Reciprocity, pp. 173–175] zu finden. Während beim quadratischen Reziprozitätsgesetz in Z (ohne die Ergänzungsgesetze) Bedingung ist, daß die beteiligten Operanden ungerade sind, ist beim quartischen Reziprozitätsgesetz in Z[i] Bedingung, daß die Gaußschen Zahlen primär (siehe Definition 3.1) sein sollen. Dadurch wird für eine Gaußsche Zahl, die nicht durch 1 + i teilbar ist, d. h., daß Real- und Imaginärteil unterschiedliche Parität haben, genau eine der vier Assoziierten ausgezeichnet. Dieses Auszeichnen einer Assoziierten ist bereits bei Gauß’ Formulierung des quartischen Reziprozitätsgesetzes zu finden: „Fundamentaltheorem der biquadratischen Reste [. . .] Bezeichnen a + bi, a′ + b′ i zwei verschiedene, unter den zu ihnen associierten Zahlen primäre, d. h. nach dem Modul 2 + 2i der Einheit congruente Primzahlen, so ist der biquadratische Character der Zahl a + bi in Bezug auf den 21 22 3 Das quartische Reziprozitätsgesetz Modul a′ + b′ i identisch mit dem Character der Zahl a′ + b′ i in Bezug auf den Modul a + bi, wenn entweder jede oder wenigstens eine der beiden Zahlen a + bi, a′ + b′ i zur ersten Art gehört d. h. nach dem Modul 4 der Einheit congruent ist; dagegen werden jene Charactere um zwei Einheiten verschieden sein, wenn keine der beiden Zahlen a + bi, a′ + b′ i zur ersten Art gehört, d. h. wenn beide nach dem Modul 4 der Zahl 3 + 2i congruent sind.“ [Gau89, Theorie der biquadratischen Reste, II. Abh., Abschnitt 67] Hierbei bezeichnet Gauß als „Character einer Zahl x in Bezug auf den Modul y “ eine natürliche Zahl j, so daß [x/y] = ij ist. Im Falle y = π prim bedeutet dieses, daß x ≡ ij mod π ist (vgl. Proposition 3.5 und Definition 3.2). Dann sind „Charactere um zwei Einheiten verschieden“ , wenn sie sich durch das Vorzeichen unterscheiden: ij und ij+2 = −ij . Dieser von Gauß benutzte Begriff des „Characters“ hängt nicht mit dem heutigen mathematischen Verständnis eines „Charakters“ als Abbildung einer multiplikativen Gruppe nach C zusammen, so daß wir Gauß’ „Character“ -Begriff nicht weiter benutzen werden. 3.1.1 Primäre Gaußsche Zahlen Definition 3.1 Eine Gaußsche Zahl x ∈ Z[i] wird primär genannt, wenn x ≡ 1 mod (2 + 2i) ist, d. h. wenn eine Gaußsche Zahl q ∈ Z[i] existiert, so daß x − q(2 + 2i) = 1 ist. Bemerkung. Zerlegt man x = x0 + ix1 in Real- und Imaginärteil (x0 , x1 ∈ Z), so gilt x = x0 + ix1 primär ⇐⇒ x0 ≡ 1, x1 ≡ 0 mod 4 ∨ x0 ≡ 3, x1 ≡ 2 mod 4. Diese Bedingung läßt sich auch noch anders formulieren als x = x0 + ix1 primär ⇐⇒ x0 ungerade ∧ x0 + x1 ≡ 1 mod 4. Da wir eine explizite Formulierung des quartischen Reziprozitätsgesetzes nur für primäre Gaußsche Zahlen vornehmen, wollen wir für jede nicht durch 1 + i teilbare Gaußsche Zahl x ∈ Z[i] explizit die Einheit ε ∈ Z[i]× berechnen, so daß ε·x primär ist. Proposition 3.1 Sei x ∈ Z[i] mit x = x0 + ix1 , x0 6≡ x1 mod 2, gegeben. Dann gilt: 2 x·ix0 +x1 −x1 +3 ist primär. Beweis. Es genügt, x0 , x1 modulo 4 zu betrachten, da i vierte Einheitswurzel ist (i4 = 1). Setze ex := x0 + x1 − x21 + 3. x ex x·iex x ex x·iex 0 + 1i 3 1 + 0i 1 + 0i 4 1 + 0i 0 + 3i −3 −3 + 0i 1 + 2i 2 −1 − 2i 2 + 1i 5 −1 + 2i 3 + 0i 2 + 3i −1 3 − 2i 3 + 2i 6 −3 + 0i 4 3 + 2i 3.1 Klassische Formulierung 23 Diese Tabelle enthält alle Gaußschen Zahlen mit Real- und Imaginärteil verschiedener Parität, die aus der Menge {0, 1, 2, 3} sind. Es ist abzulesen, daß in allen acht Fällen x·iex primär ist. Korollar 3.2 Sei x ∈ Z[i] mit x0 6≡ x1 mod 2. Dann existiert eindeutig ε ∈ Z[i]× , so daß ε·x primär ist. 3.1.2 Das quartische Restsymbol Wir werden nun die Theorie des quartischen Restsymbols in der für diese Arbeit notwendigen Tiefe entwickeln, um schließlich das klassische quartische Reziprozitätsgesetz angeben zu können. Im folgenden Abschnitt sei π ∈ Z[i] ein Primelement. Proposition 3.3 Der Restklassenring Z[i]/πZ[i] ist ein Körper mit N(π) Elementen. Beweis. [IR90, Proposition 9.8.1] Korollar 3.4 Sei x ∈ Z[i]. Wenn π ∤ x, dann ist xN (π)−1 ≡ 1 mod π. Proposition 3.5 Sei x ∈ Z[i], π ∤ x, π 6∼ 1 + i. Dann existiert eindeutig ein j ∈ {0, 1, 2, 3}, so daß x N(π)−1 4 ≡ ij mod π. Beweis. [IR90, Proposition 9.8.2] Diese Proposition motiviert die folgende Definition des quartischen Restsymbols: Definition 3.2 Sei π ∈ Z[i] prim, N(π) 6= 2. Dann ist das quartische Restsymbol (oder biquadratische Restsymbol) definiert als (j i wenn π ∤ x, j wie in Proposition 3.5, x = π 0 wenn π | x. h i · × π ist ein Charakter der Gruppe (Z[i]/π Z[i]) nach für ε ∈ Z[i]× (siehe Proposition 3.6(f)). Proposition 3.6 Seien x, y ∈ Z[i]. (a) Es gelte: π ∤ x. Dann: C. Insbesondere ist h i x 4 π = 1 ⇐⇒ ∃ z ∈ Z[i] : z ≡ x mod π. h i h i · = · π επ 24 3 h i h ih i xy x y π = π π . h i h i x = x̄ . (c) π π̄ (b) Das quartische Reziprozitätsgesetz h i π0 −1 −1 (d) Wenn π = π0 + iπ1 primär ist, dann ist π = (−1) 2 . h i h i x = y . (e) Wenn x ≡ y mod π ist, dann ist π π h i h i x = x . (f) Sei λ ∈ Z[i]. Dann: π Z[i] = λZ[i] =⇒ π λ Beweis. [IR90, Proposition 9.8.3] h i Bislang haben wir das quartische Restsymbol π· nur für Primelemente π ∈ Z[i] definiert. Das quartische Restsymbol läßt sich wie folgt verallgemeinern: Definition 3.3 Q Sei x ∈ Z[i] \ Z[i]× , so daß (1 + i) ∤ x. Sei y ∈ Z[i]. Zerlege x = j∈J πj , wobei J eine endliche Indexmenge und πj ∈ Z[i] für j ∈ J prim ist (Eindeutigkeit der Primfaktorzerlegung in Z[i]). Wenn gcd(x, y) ∼ 1 ist, dann definiere Y y y = , x π j j∈J y andernfalls (also gcd(x, y) 6∼ 1): = 0. x h i y wohldefiniert. Teil (e) dieser Proposition x ist nach Proposition 3.6(f) h i h i y z ist. impliziert, daß aus y ≡ z mod x folgt, daß x = x Bemerkung. Theorem 3.7 (Quartisches Reziprozitätsgesetz) Für primäre Gaußsche Zahlen x = x0 + ix1 und y = y0 + iy1 , die relativ prim zueinander sind, gilt −1 x0 −1 y0 −1 x1 y 1 N(x)−1 N(y)−1 x y = (−1) 4 · 4 = (−1) 2 · 2 = (−1) 4 . y x Darüber hinaus gibt es die folgenden Ergänzungsgesetze: x0 −x1 −x2 1−x0 −x1 i 1+i 2 1 −1 4 =i 2 , =i =i 2 . , x x x (3.1.1) (3.1.2) Beweis. Für einen Beweis des Hauptgesetzes siehe z. B. [IR90, Theorem 9.9.2]. Ein vollständiger Beweis dieses Theorems ist auch in [Lem99, § 6] zu finden. Bemerkung. Aus dem ersten und zweiten Ergänzungsgesetz folgt unter Benutzung von 2 = i3 ·(1 + i)2 das dritte Ergänzungsgesetz. 3.2 Exkurs: Hilbert-Symbol und Reziprozitätsgesetze 25 Proposition 3.8 Seien x, y ∈ Z[i] primäre Gaußsche Zahlen, die relativ prim zueinander sind. Sei x′ ∈ 4Z[i], so daß x + x′ und y relativ prim zueinander sind. Des weiteren seien x′′ ∈ 8Z[i] und x′′′ ∈ (8 + 8i)Z[i]. Dann gilt −1 −1 x y y x + x′ , = y x y x + x′ i i , = x x + x′′ 1+i 1+i . = x x + x′′′ Beweis. Offensichtlich sind x + x′ , x + x′′ , x + x′′′ jeweils primär. Da y primär ist, ist y1 gerade, also ist y1 /2 eine ganze Zahl. Des weiteren ist x′1 /2 gerade, x′′0 /2 ≡ 0 mod 4 sowie ′′′ ′′′ x′′′ 1 ≡ 0 mod 8, x0 − x1 ≡ 0 mod 16. Nach Theorem 3.7 erhält man −1 −1 x′1 y x1 x1 y 1 x1 y 1 + · 21 x + x′ y x y 2 2 · 2 4 2 = = (−1) , = (−1) = (−1) y x y x + x′ 1−(x0 +x′′ x′′ 1−x0 1−x0 i i 0) 0 − 2 = i 2 , =i 2 =i 2 = x x + x′′ ′′′ ′′′ ′′′ ′′′ 2 x0 −x1 −x2 x0 −x1 −x2 1+i 1 −1 1 −1 + x0 −x1 −2x1 x1 −x1 4 4 4 =i =i x ′′′ ′′′ 2 (x0 +x′′′ 1+i 0 )−(x1 +x1 )−(x1 +x1 ) −1 4 = =i . x + x′′′ 3.2 Exkurs: Hilbert-Symbol und Reziprozitätsgesetze Wir werden in diesem Abschnitt das Hilbert-Symbol vorstellen, um dadurch Zugang zu den höheren Reziprozitätsgesetzen in allgemeiner Form zu erlangen. Dazu skizzieren wir kurz, durch welche Zusammenhänge man in gewissen Zahlkörpern zum Hilbert-Symbol gelangt. Wichtiger ist für unsere weitere Betrachtung, welchen Rechenregeln das HilbertSymbol genügt und wie es für die Primstelle λ = 1 + i im Fall des Zahlkörpers Q(i) konkret berechnet werden kann. Für tieferliegende Details verweisen wir auf das Zahlentheorie-Buch von J. Neukirch [Neu92, insbesondere Kapitel V. § 3 und Kapitel VI. § 8], dem wir hier in der Darstellung folgen. Sei K ein Zahlkörper, der die Gruppe µn der n-ten Einheitswurzeln enthält. Durch das Zusammenspiel einerseits der Kummertheorie und andererseits der Klassenkörpertheorie über solch einem Körper K ergibt sich das Hilbert-Symbol, das zur Verallgemeinerung des klassischen (quadratischen) Gaußschen Reziprozitätsgesetzes auf n-te Potenzreste Anwendung findet. √ Sei L = K( n K × ) die maximale abelsche Erweiterung vom Exponenten n. Einerseits erhält man durch die Klassenkörpertheorie den kanonischen Isomorphismus n G(L|K) ∼ = K × /K × , 26 3 Das quartische Reziprozitätsgesetz andererseits liefert die Kummertheorie den kanonischen Isomorphismus n Hom(G(L|K), µn ) ∼ = K × /K × . Die bilineare Abbildung G(L|K) × Hom(G(L|K), µn ) → µn , (σ, χ) 7→ χ(σ), liefert daher eine nicht-ausgeartete Paarung (multiplikativ in beiden Argumenten) n n ( · , · )p : K × /K × × K × /K × → µn . Diese Paarung wird das Hilbert-Symbol genannt. Für a, b ∈ K × besteht folgende Beziehung zum Normrestsymbol: √ √ √ n n n (3.2.1) (a, Kp( b)|Kp) b = (a, b)p b, wobei p eine Stelle (reell, komplex oder p-adisch) des Zahlkörpers K ist. Gleichung (3.2.1) ist unabhängig von der Wahl der n-ten Wurzel. Satz 3.9 Das Hilbert-Symbol besitzt die folgenden grundlegenden Eigenschaften: (i) (aa′ , b)p = (a, b)p(a′ , b)p sowie (a, bb′ )p = (a, b)p(a, b′ )p. (ii) (a, b)p(b, a)p = 1. (iii) (a, Q 1 − a)p = 1 (Steinberg-Identität) und (a, −a)p = 1. (iv) p(a, b)p = 1 (Produktformel); dabei wird das Produkt über alle Stellen von K genommen. Beweis. [Neu92, Satz V.3.2, Theorem VI.8.1] Definition 3.4 Wenn eine Stelle des Zahlkörpers K durch das Primideal p gegeben ist, welches n nicht teilt, so ist das verallgemeinerte Legendre-Symbol bzw. n-te Potenzrestsymbol die durch die verallgemeinerte Eulersche Gleichung N(p)−1 a ≡ a n mod p, N(p) = (OK : p), p definierte n-te Einheitswurzel. Definition 3.5 Q Allgemeiner definieren wir für jedes zu n prime Ideal b = p∤n pvp (b) und jede zu b teilerfremde Zahl a das n-te Potenzrestsymbol durch vp (b) a Y a vp (b) a = , wobei = 1 sein soll, sofern vp(b) = 0 ist. b p p p∤n Theorem 3.10 (Allgemeines Reziprozitätsgesetz der n-ten Potenzreste) Sind a, b ∈ K × zueinander und zu n prime Zahlen, so gilt Y b a −1 = (a, b)p. a b p|n,∞ 3.2 Exkurs: Hilbert-Symbol und Reziprozitätsgesetze Beweis. [Neu92, Theorem VI.8.3.] 27 Für das Reziprozitätsgesetz entscheidend sind also die Hilbert-Symbole an den unendlichen Stellen und an den Stellen, die n teilen. Nur im Falle des quadratischen Reziprozitätsgesetzes spielen die unendlichen Stellen eine Rolle, da andernfalls die vorausgesetzte Existenz von Einheitswurzeln erzwingt, daß die unendlichen Stellen komplex sind (komplexe Einbettungen!). Mit diesen Vorbemerkungen können wir nun konkret Reziprozitätsgesetze in gewissen Zahlkörpern betrachten. Sei im folgenden einschränkend angenommen, daß n zu einer Potenz des Primelementes λ ∈ OK assoziiert ist. Jedes Körperelement läßt sich als a = λvλ (a) a∗ mit zu λ teilerfremden a∗ darstellen. Wenn man nun nur solche a, b ∈ K betrachtet, so daß das Hilbert-Symbol (a, b)v an den unendlichen Stellen gleich 1 ist (im quadratischen Fall n = 2, K = Q genügt es zu verlangen, daß a, b > 0 sind), dann verallgemeinert sich das Reziprozitätsgesetz zu a b = (a, b)λ ∗ . (3.2.2) a b Konkret kann man das Hilbert-Symbol auf diese Weise setz im (i) quadratischen Fall mit n = 2, K = Q, √ (ii) kubischen Fall mit n = 3, K = Q( −3), (iii) quartischen Fall mit n = 4, K = Q(i), benutzen für das Reziprozitätsgeλ=√ 2, λ = −3; λ = 1 + i. Operanden positiv; Der konkrete Zusammenhang zwischen dem Hilbert-Symbol und dem Reziprozitätsgesetz im quadratischen Fall wird in [Neu92, V.3.6, VI.8.4] dargestellt; der Zusammenhang im quartischen Fall wird in dieser Arbeit im folgenden Abschnitt 3.3 dargestellt. In einer Divisionskette x = qy + z, y = q̃z + u mit nicht durch λ teilbarem x gelten also folgende Regeln: Falls auch y nicht durch λ teilbar ist, so ist y = y ∗ , und es folgt aus Gleichung (3.2.2) y x z = (x, y)λ = (x, y)λ . (3.2.3) x y y Falls hingegen y durch λ teilbar ist, ist z nicht durch λ teilbar, und es gilt y u y x z −1 = (x, y)λ = (x/z, y) · . = (x, y) = (x, y) (z, y) · λ λ λ λ x y∗ y∗ z z (3.2.4) Sofern das entsprechende Hilbert-Symbol nur von der Restklasse der Operanden in Z[i]/λf Z[i] abhängt, so genügt es, die Operanden x, z mod λf , y mod λ2f −1 zu kennen. Ist dann nämlich y ≡ 0 mod λf , so ist x/z ≡ 1 mod λf und deswegen (x/z, y)λ = (1, y)λ = 1. Andernfalls ist y = λk y ∗ , wobei 1 ≤ k ≤ f − 1 ist. Dabei sind dann k sowie y ∗ mod λf aus y mod λ2f −1 bekannt, so daß dann wegen (x/z, y)λ = (x/z, λ)kλ ·(x/z, y ∗ )λ 28 3 Das quartische Reziprozitätsgesetz das Hilbert-Symbol (x/z, y)λ berechnet werden kann. Die Gleichungen (3.2.3) und (3.2.4) werden wir im folgenden benutzen, um eine alternative Formulierung des quartischen Reziprozitätsgesetzes zu erlangen, bei der es allerdings bereits genügt, die auftretenden Operanden einer Divisionskette (eines Euklidabstiegs) modulo 8 ∼ λ6 zu kennen (λ = 1 + i im quartischen Fall). Diese explizite Betrachtung des quartischen Falls wird also zeigen, daß deutlich kleinere Restklassen der Operanden genügen als bei obiger allgemeinerer Betrachtung, bei der sich für den quartischen Fall f = 7 ergibt (λ7 ∼ 8 + 8i, vgl. Proposition 3.8 bzw. Proposition 3.12), so daß man y modulo λ13 ∼ 64 + 64i kennen müßte. Algorithmisch gesehen ist es für eine konkrete Implementierung vorteilhaft, die Operanden nur modulo einer möglichst kleinen λ-Potenz kennen zu müssen, da sich dann in den einzelnen Reduktionsschritten (3.2.3) oder (3.2.4) das Hilbert-Symbol einfacher (d. h. schneller) berechnen läßt, da der Algorithmus z. B. in Abhängigkeit von der Restklasse der Operanden in einer Tabelle nachsehen kann, um die Einheit für das entsprechende HilbertSymbol zu ermitteln (je kleiner die Restklasse ist, desto kleiner kann die entsprechende Tabelle sein). 3.3 Alternative Formulierung des quartischen Reziprozitätsgesetzes In diesem Abschnitt wollen wir die theoretischen Erkenntnisse, die wir durch die Zusammenhänge zwischen den Reziprozitätsgesetzen und dem Hilbert-Symbol gewonnen haben, für das quartische Reziprozitätsgesetz benutzen. Dazu sei also λ = 1 + i. Seien x, y ∈ Z[i]. Es sei x primär und k := vλ (y) ≥ 1, d. h. y ist durch 1 + i teilbar. Bei der klassischen Formulierung des quartischen Reziprozitätsgesetzes reicht es nicht, für den Operanden y nur die unteren Bits des Real- und Imaginärteils zu kennen, da es notwendig ist, k mod 4 zu kennen, um das zweite Ergänzungsgesetz anwenden zu können: x −x −x2 −1 (1 + i)k y/λk y/λk y k· 0 14 1 = =i , x x x x sofern x primär ist. Allerdings würde nach einer Benutzung dieses Ergänzungsgesetzes, ähnlich wie in Z, danach kein kanonischer Zusammenhang mehr zur Quotienten-/Restsequenz eines Euklidabstiegs der g.g.T.-Berechnung bestehen. Bislang ist kein Algorithmus zur Berechnung des quartischen Restsymbols bekannt, der das zweite Ergänzungsgesetz direkt verwendet und asymptotisch so schnell ist wie der Algorithmus, den wir in dieser Arbeit vorstellen. Unser Algorithmus verwendet nicht das zweite Ergänzungsgesetz, sondern Reduktionen gemäß (3.2.3) und (3.2.4). Wir werden nun zeigen, daß es bei solchen Reduktionsschritten zur Bestimmung des Hilbert-Symbols (Zusatzfaktor aus Z[i]× ) genügt, Real- und Imaginärteile der Operanden modulo 8 zu kennen. 3.3 Alternative Formulierung des quartischen Reziprozitätsgesetzes 29 Proposition 3.11 Seien x, y ∈ Z[i] teilerfremde primäre Gaußsche Zahlen. Dann gilt −1 x1 y 1 y x (x, y)λ = = (−1) 4 , x y 1−x0 i =i 2 , (x, i)λ = x x0 −x1 −x2 λ 1 −1 4 (x, λ)λ = =i . x Beweis. Nachrechnen unter Benutzung von Theorem 3.7. Proposition 3.12 Seien x, y ∈ Z[i] teilerfremde Gaußsche Zahlen, y 6= 0. Sei x ≡ 1 mod λ7 . Dann ist (x, y)λ = 1. Beweis. Aus x ≡ 1 mod λ7 (λ7 ∼ 8 + 8i) folgt, daß gcd(x, λ) ∼ 1 ist. Des weiteren ist x primär. Zerlege y = λvλ (y) δy ∗ , wobei δ ∈ Z[i]× so gewählt ist, daß y ∗ primär ist. Dann ist v (y) (x, y)λ = (x, δ)λ ·(x, λ)λλ ·(x, y ∗)λ , (3.3.1) aber die dabei auftretenden drei Hilbert-Symbole hängen nach den Propositionen 3.8 und 3.11 nur von den Restklassen der Operanden in Z[i]/λ7 Z[i] ab. Wegen x ≡ 1 mod λ7 sind alle drei Hilbert-Symbole auf der rechten Seite von (3.3.1) gleich 1, also ist (x, y)λ = 1. Lemma 3.13 Seien x, y ∈ Z[i], relativ prim zueinander und zu λ. Dann hängt (x, y)λ nur von der jeweiligen Restklasse der Operanden x, y in Z[i]/8Z[i] ab. Beweis. Durch Multiplikation mit Einheiten εx , εy ∈ Z[i]× kann man erreichen, daß εx x und εy y primär sind. Dabei hängen diese Einheiten nach Proposition 3.1 nur von der Z[i]/4Z[i]-Restklasse der Operanden x, y ab. Wir wissen aus Gleichung (3.2.3), daß −1 3 −3 −1 −1 x εx y εy εy y εx x y x = = · (x, y)λ = x y εx x εy y εx x εy y εx x εy y ist. Proposition 3.8 besagt, daß in obigem Ausdruck die ersten beiden Restsymbole nur von der Z[i]/8Z[i]-Restklasse, das Produkt der letzten beiden Restsymbole nur von der Z[i]/4Z[i]-Restklasse abhängen. Insgesamt ergibt sich, daß (x, y)λ nur von der Z[i]/8Z[i]Restklasse der Operanden x, y abhängt. Lemma 3.14 Seien x, y ∈ Z[i], x teilerfremd zu y (und λ), y = δλk y ∗ mit k := vλ (y) ≥ 1 und δ ∈ Z[i]× , so daß y ∗ primär ist. Sei x = qy + z mit q, z ∈ Z[i]. Dann hängt (x/z, y)λ nur von der Restklasse der Operanden x, y, q in Z[i]/8Z[i] ab. 30 3 Das quartische Reziprozitätsgesetz Bemerkung. Der nun folgende Beweis erscheint sehr technisch aufgrund der Fallunterscheidungen. Die zentrale Idee des Beweises besteht darin, in jedem der Fälle zu zeigen, daß es jeweils genügt, die Operanden x, y, q modulo 8 zu kennen, um (x/z, y)λ ∈ Z[i]× zu berechnen, obwohl die Werte der Hilbertsymbole (x/z, δ)λ , (x/z, λk )λ und (x/z, y ∗ )λ nicht allein durch diese Restklassen bestimmt sind. Beweis. Sei o. E. x primär. (Anderenfalls könnte man den gesamten Divisionsschritt mit der Einheit multiplizieren, so daß x primär wird; diese Einheit hängt nur von der Z[i]/4Z[i]-Restklasse von x ab.) Die Schwierigkeit besteht nun darin, daß man nicht immer k, δ und y ∗ hinreichend genau kennt, wenn man nur die Restklasse von y in Z[i]/8Z[i] kennt, um damit (x/z, y)λ direkt zu berechnen. Um zu zeigen, daß (x/z, y)λ nur von den Z[i]/8Z[i]-Restklassen der Operanden x, y, q abhängt, werden wir zeigen, daß (x/z, y)λ = (x′ /z ′ , y ′)λ ist, wobei x ≡ x′ , y ≡ y ′, q ≡ q ′ mod λ6 , z ′ := x′ − q ′ y ′, x − z + cλ6 ≡ x′ − z ′ mod λ7 , c ∈ {0, 1}, (3.3.2) sind. Insbesondere sind dann auch x′ , z ′ nicht durch λ teilbar, hingegen ist y ′ durch λ teilbar. Allgemein gilt für das Hilbert-Symbol (x/z, y)λ = (x/z, δ)λ ·(x/z, λ)kλ ·(x/z, y ∗ )λ , (3.3.3) wobei aber δ, k, y ∗ nicht notwendigerweise aus der Z[i]/8Z[i]-Restklasse von y zu ermitteln sind. (a) Da wir zeigen wollen, daß (x/z, y)λ nur von den Z[i]/8Z[i]-Restklassen der Operanden abhängt, muß insbesondere gezeigt werden, daß (x/z, y)λ für k ≥ 6 konstant ist, da λ6 ∼ 8 ist, so daß wir durch Kenntnis der Restklasse von y in Z[i]/8Z[i] entweder k ∈ {1, . . . , 5} explizit feststellen können oder nur k ≥ 6 erhalten. (b) Setze h := vλ (qy) = k + vλ (q). Dann ist x − z = qy ≡ 0 mod λh . (c) x − z ≡ 0 mod λj ⇐⇒ x/z ≡ 1 mod λj , da z ein Inverses modulo λj besitzt. 3 3 [h ≥ 3] Sei h ≥ 3. Dann ist x ≡ z mod λ , d. h. auch z ist primär (λ ∼ 2 + 2i). 4 [h ≥ 4] Aus h ≥ 4 folgt, daß x/z ≡ 1 mod λ (λ4 ∼ 4). Da y ∗ primär ist, ist dann ∗ Im(x/z)y1 (x/z, y ∗ )λ = (−1) 4 = 1, so daß in (3.3.3) nur noch die Faktoren (x/z, δ)λ k und (x/z, λ )λ zur Berechnung von (x/z, y)λ zu betrachten sind. h ≥ 7 : Ist h ≥ 7, so ist x/z ≡ 1 mod λ7 , also ist nach Proposition 3.12 (x/z, y)λ = 1. h = 6 : Ist h = 6, so ist x/z ≡ 1 mod λ6 , aber x/z 6≡ 1 mod λ7 , also ist x/z ≡ 1 + iλ6 = 9 mod λ7 . (x/z, y)λ = (x/z, δ)λ ·(x/z, λk )λ ·(x/z, y ∗ )λ = (9, id )λ ·(9, λk )λ = id· [k ≥ 6] [h ≤ 5] 1−9 2 ·ik· 9−0−0−1 4 = (−1)k . Aus h = 6 folgt, daß k ∈ {1, . . . , 6} ist, was aus y mod λ6 abzulesen ist. Ist k ≥ 6, so ist h ≥ 6 und somit (x/z, y)λ = 1 (vgl. (a)). Aus vλ (q), vλ (y) ≤ h ≤ 5 folgt, daß vλ (q) = vλ (q ′ ), k = vλ (y) = vλ (y ′) ist, da die Operanden q, q ′ und y, y ′ jeweils modulo 8 ∼ λ6 kongruent sind. 3.3 Alternative Formulierung des quartischen Reziprozitätsgesetzes 31 Dann ist gemäß Definition (3.3.2) x − z + cλ6 ≡ x′ − z ′ mod λ7 , was äquivalent ist zu x/z + cλ6 ≡ x′ /z ′ mod λ7 . Ebenfalls dazu äquivalent ist qy + cλ6 ≡ q ′ y ′ mod λ7 . (3.3.4) Nun ist q ′ ≡ q + sq λ6 mod λ7 für ein geeignetes sq ∈ {0, 1}, also kann man (3.3.4) schreiben als qy + cλ6 ≡ (q + sq λ6 )y ′ ≡ qy ′ mod λ7 , (3.3.5) da sq λ6 y ′ ≡ 0 mod λ7 ist wegen vλ (y ′ ) ≥ 1. Seien nun q = λvλ (q) q ∗ , y = λk δy ∗ und y ′ = λk δ ′ y ′ ∗ zerlegt, wobei q ∗ , y ∗, y ′∗ zu λ teilerfremd sind. Des weiteren seien δ, δ ′ ∈ Z[i]× so gewählt, daß y ∗ , y ′∗ primär sind. Weiterhin seien d, d′ ∈ Z, so daß ′ δ = id , δ ′ = id sind. Dann ist (3.3.5) äquivalent zu ∗ q ∗ δy ∗ + cλ6−h ≡ q ∗ δ ′ y ′ mod λ7−h . (3.3.6) Da q ∗ teilerfremd zu λ ist, besitzt q ∗ ein Inverses modulo λ7−h , so daß wir (3.3.6) mit 1/q ∗ ≡ 1 + q̃λ mod λ7−h multiplizieren können. ∗ δy ∗ + cλ6−h ≡ δ ′ y ′ mod λ7−h . (3.3.7) Andererseits erhält man, sofern man die Z[i]/8Z[i]-Restklasse von y, y ′ kennt, daß aus y ≡ y ′ mod λ6 folgt, daß ∗ δy ∗ ≡ δ ′ y ′ mod λ6−k . (3.3.8) Aus den Kongruenzen (3.3.7) und (3.3.8) erhält man nun zusammen k ≤h−1 =⇒ (3.3.9) c = 0, da aus k ≤ h − 1 wegen 6 − k ≥ 7 − h aus (3.3.8) folgt ∗ δy ∗ ≡ δ ′ y ′ mod λ7−h ; (3.3.10) mit (3.3.7) und λ6−h 6≡ 0 mod λ7−h folgt die Implikation (3.3.9). Dieses bedeutet also, daß im Fall k < h ≤ 5 immer x/z ≡ x′ /z ′ mod λ7 ist. (d) Für primäres w ∈ Z[i] hängt (w, λ)λ nach Proposition 3.8 nur von der Restklasse Z[i]/λ7 Z[i] von w ab, also gilt ( −(x′ /z ′ , λ)kλ wenn k ungerade und c = 1, k (x/z, λ)λ = (3.3.11) (x′ /z ′ , λ)kλ sonst. h=5: Ist h = 5, so ist x/z ≡ 1 mod (4 + 4i). Man erhält dann (x/z, y)λ = (x/z, i)dλ ·(x/z, λ)kλ = id· 1−Re(x/z) 2 ·(x/z, λ)kλ = (−1)d ·(x/z, λ)kλ . 32 3 Das quartische Reziprozitätsgesetz Aus (3.3.7) δy ∗ + cλ ≡ δ ′ y ′ ∗ mod 2. Im Fall c = 1, d. h. k = 5, ist genau eine Einheit δ oder δ ′ imaginär (i oder −i), die andere ist reell (1 oder −1). Somit unterscheidet sich also die Parität von d und d′ . Man erhält ′ (x/z, y)λ = (−1)d ·(x/z, λ)kλ = −(−1)d ·(−1)k (x′ /z ′ , λ)kλ = (x′ /z ′ , y ′)λ . Ist c = 0, so erhält man d ≡ d′ mod 2. Mit Gleichung (3.3.11) folgt dann ′ (x/z, y)λ = (−1)d ·(x/z, λ)kλ = (−1)d ·(x′ /z ′ , λ)kλ = (x′ /z ′ , y ′)λ . h=4: Ist h = 4, so sind x/z, x′ /z ′ ≡ 1 mod 4. Es ist (x/z, y)λ = (x/z, δ)λ ·(x/z, λk )λ = id· [h ≤ 3] 1−Re(x/z) 2 ·(x/z, λ)kλ = (−1)d ·(x/z, λ)kλ . Im Fall k = h = 4 ist δy ∗ + cλ2 ≡ δ ′ y ′∗ ≡ λ3 , also ist d ≡ d′ mod 2, da y ∗ ≡ y ′∗ ≡ 1 mod (2 + 2i). Damit ist (x/z, y)λ = (x′ /z ′ , y ′)λ , weil zudem (x/z, λ)4λ = 1 ist (unabhängig von c). Ist hingegen k < h = 4, also c = 0 nach (3.3.9), so ist (x/z, y)λ = (x′ /z ′ , y ′)λ , da d = d′ wegen δy ∗ ≡ δ ′ y ′∗ mod (2 + 2i) und zudem (x/y, λ)k = (x′ /y ′, λ)k nach (3.3.11) ist. Ist h ≤ 3, so ist k ≤ 3. Damit ist δy ∗ = y/λk modulo λ3 bekannt, da man y mod λ6 kennt. Da y ∗ primär ist, ist y ∗ ≡ 1 mod (2 + 2i), also ist δ ∈ Z[i]× durch δ ≡ y/λk mod λ3 bestimmt. Damit hängt (x/z, δ)λ nur von den Restklassen x/z, y mod 8 ab, d. h. (x/z, δ)λ = (x′ /z ′ , δ ′ )λ . h=3: Ist h = 3, so ist x/z ≡ 1 mod (2 + 2i). Aus x/z 6≡ 1 mod 4 folgt, daß x/z ≡ 3 + 2i mod 4 ist. Somit ist (x/z, y ∗ )λ = (−1) ∗ Im(x/z)y1 4 ∗ = (−1)y1 /2 . Ist nun k = h = 3, so ergibt (3.3.7) δy ∗ + cλ3 ≡ δ ′ y ′ ∗ mod λ4 , d. h. y1∗ ≡ y ′∗1 + 2c mod 4. Damit ist (x/z, y ∗ )λ = (−1)c ·(x′ /z ′ , y ′∗ )λ . Aus den Gleichungen (3.3.7) und (3.3.11) folgt (x/z, y)λ = (x′ /z ′ , y ′)λ . Ist hingegen k < h = 3, d. h. c = 0, so ist yj ≡ y1′ ∗ mod 4 (in Z), also ist (x/z, y ∗ )λ = (x′ /z ′ , y ′∗ )λ . Damit folgt aus den Gleichungen (3.3.7) und (3.3.11) (x/z, y)λ = (x′ /z ′ , y ′)λ . h = 2 : Ist h = 2, so ist x/z ≡ 1 mod 2 und x/z 6≡ 1 mod (2 + 2i). Dann ist −x/z ≡ 1 mod (2 + 2i), d. h. −x/z ist primär. Des weiteren ist k ≤ 2, also ist δy ∗ ≡ δ ′ y ′∗ ≡ mod4. Also sind −x/z, y jeweils modulo 4 bekannt. Aus (x/z, y ∗ )λ = (−x/z, y ∗ )λ ·(i2 , y ∗ )λ = (−1) ∗ Im(−x/z)y1 4 ·(−1) ∗ 1−y0 2 folgt somit, daß (x/z, y ∗ )λ = (x′ /z ′ , y ′ ∗ )λ ist. Des weiteren folgt aus (3.3.11), daß (x/z, λ)kλ = (x′ /z ′ , λ)kλ ist, da entweder k = 2 oder k = 1 (=⇒ c = 0) ist. Mit Gleichung (3.3.7) folgt dann (x/z, y)λ = (x′ /z ′ , y ′)λ . 3.3 Alternative Formulierung des quartischen Reziprozitätsgesetzes h=1: 33 Ist h = 1, so ist k = 1. Es ist x/z ≡ qy ≡ 1 mod λ und x/z 6≡ 1 mod 2, insbesondere existiert e ∈ {1, 3}, so daß ie x/z primär ist. Man zerlegt (x/z, y ∗ )λ = (ie x/z, y ∗ )λ ·(i4−e , y ∗)λ , wobei man (ie ·x/z, y ∗ )λ = (ie ·x′ /z ′ , y ′∗ )λ analog zum Fall h = 2 zeigt. Aus (3.3.7) erhält man δy ∗ +c(4+4i) ≡ δ ′ y ′∗ mod 8, und wegen δ = δ ′ insbesondere y ∗ + c(4 + 4i) ≡ y ′∗ mod 8. Damit ist (i4−e , y ∗ )λ = (y ∗ , i4−e )3λ = (y ∗ , i)eλ = ie· ∗ 1−y0 2 = ie· ∗ 1−y ′ 0 −4c 2 ∗ = (−1)c ·(i4−e , y ′ )λ . Mit Hilfe von (3.3.11) folgt nun (x/z, y)λ = (x′ /z ′ , y ′)λ . Aufgrund der Gleichungen (3.2.3), (3.2.4) sowie aufgrund der beiden Lemmata 3.13 und 3.14 können wir nun das zentrale Theorem formulieren, das die Grundlage für unseren schnellen Algorithmus zur Berechnung des quartischen Restsymbols liefert: Theorem 3.15 Seien xj−1 , xj ∈ Z[i] relativ prim zueinander und vλ (xj−1 ) = 0. Seien xj−1 = qj xj + xj+1 , xj = qj+1 xj+1 + xj+2 Schritte einer Divisionskette (bzw. eines Euklidabstiegs). Dann gilt i h xj+1 · (x , x ) wenn λ ∤ xj , j−1 j λ xj xj = hx i j+2 · (x /x , x ) wenn λ | x , xj−1 j−1 j+1 j λ j xj+1 und die auftretenden Hilbert-Symbole (xj−1 , xj )λ bzw. (xj−1 /xj+1 , xj )λ hängen ausschließlich von der Z[i]/8Z[i]-Restklasse der Operanden xj−1 , xj , qj ab. Definition 3.6 Seien xj−1 , xj ∈ Z[i] relativ prim zueinander und vλ (xj−1 ) = 0. Sei xj−1 = qj xj + xj+1 ein Euklidschritt. Dann definiere τ (xj−1 , xj ) := (xj−1 , xj )λ , wenn λ ∤ xj ; σ(xj−1 , xj , qj ) := (xj−1 /xj+1 , xj )λ , wenn λ | xj . Bemerkung. Die Aussage dieses Theorems 3.15, daß durch die Z[i]/8Z[i]-Restklasse der Operanden das Hilbertsymbol (bzw. τ oder σ) bestimmt ist, kann nicht weiter verschärft werden, da σ für Z[i]/∆Z[i]-Restklassen, ∆ := 4 + 4i, nicht wohldefiniert ist. Dieses wird aus den folgenden Beispielen deutlich, bei denen jeweils die entsprechenden σ-Restklassenoperanden kongruent modulo ∆ sind, aber die σ-Werte (d. h. die entsprechenden Hilbertsymbole) verschieden sind. σ(1, 1 + i, i) = i = − σ(1 + ∆, 1 + i, i), σ(1, 0, i) = 1= − σ(1, ∆, i), σ(1, 1 + i, 0) = 1= − σ(1, 1 + i, ∆). 34 3 Das quartische Reziprozitätsgesetz Abschließend geben wir noch ein Lemma an, das besagt, daß bei einem Euklidabstieg xj−1 = qj xj + xj+1 , 1 ≤ j ≤ r, von x0 , x1 ∈ Z[i] in der Restsequenz x0 , x1 , . . . , xr , xr+1 die Nachbarn eines durch λ teilbaren xj nicht durch λ teilbar sind. Mit der Voraussetzung, daß x0 nicht durch λ teilbar ist, erhält man damit induktiv, daß die „Nenner“ der in Theorem 3.15 auftretenden Restsymbole für 1 ≤ j ≤ r nicht durch λ teilbar sind. Lemma 3.16 Seien x, y ∈ Z[i], gcd(x, y) ∼ 1. Sei x0 := x, x1 := y, und sei xj−1 = qj xj + xj+1 ein Euklidschritt für 1 ≤ j ≤ r, wobei xr ∼ xr+1 ∼ 1 ist, d. h. der letzte Euklidschritt bei der g.g.T.-Berechnung wird wieder (wie auch bei der Berechnung des Jacobi-Symbols, vgl. Abschnitt 2.2.2) so modifiziert, daß als Rest eine Einheit auftritt. Dann gilt für 1 ≤ j ≤ r (1 + i) | xj =⇒ (1 + i) ∤ xj−1 , xj+1 . Beweis. Sei 1 + i ein Teiler von xj . Wäre dann 1 + i auch ein Teiler von xj+1 , so folgte aus xj−1 = qj xj + xj+1 , daß 1 + i ein Teiler von xj−1 ist. Wenn 1 + i ein Teiler von xj−1 wäre, so folgte für j ≥ 2 aus xj−2 = qj−1 xj−1 + xj , daß 1 + i ein Teiler von xj−2 ist. Induktiv (bzw. unmittelbar für j = 1) erhält man, daß dann 1 + i sowohl x als auch y teilt — ein Widerspruch zu gcd(x, y) ∼ 1. Kapitel 4 Algorithmus zur Berechnung des quartischen Restsymbols Wir haben nun alle Vorbereitungen getroffen, um einen Algorithmus zur schnellen Berechnung des quartischen Restsymbols formulieren zu können. Dabei sei mit z ′ ∈ Z[i]/8Z[i] die zu z ∈ Z[i] gehörende Restklasse bezeichnet: z ′ = z0′ + iz1′ ≡ z mod 8, z0′ , z1′ ∈ {0, . . . , 7}. Algorithmus 4.1 Berechnung des quartischen Restsymbols algorithm QUARTIC(x, y) Zu Gaußschen Zahlen x, y ∈h Zi[i], 1 + i teile nicht x, berechnet Algorithmus QUARTIC y das quartische Restsymbol x . Q1: x0 := x, x1 := y; Q2: Berechne (mit einem schnellen g.g.T.-Algorithmus) einen Euklidabstieg zu x0 , x1 mit Euklidschritten xj−1 = qj xj + xj+1 , 1 ≤ j ≤ r, wobei xr = xr+1 oder xr = −xr+1 das Abbruchkriterium ist; dabei speichere die qj ab. Q3: if xr 6∼ 1 then return 0; \\ gcd(x, y) 6∼ 1 else \\ gcd(x, y) ∼ 1 ′ xr+1 Q4: j := r, s := = 1; x′r Q5: Q6: Q7: Q8: while j > 0 do x′j−1 := qj′ x′j + x′j+1 ; if (1 + i) | x′j−1 then ′ x′j−2 := qj−1 x′j−1 + x′j ; ′ ′ s := s·σ(xj−2 , x′j−1 , qj−1 ), j := j − 2; else s := s·τ (x′j−1 , x′j ), j := j − 1; return s; 35 x′ \\ Invariante s = j+1 x′j \\ j ≥ 2, da (1 + i) 6 | x \\ j ≥ 0 \\ j ≥ 0 36 4 Algorithmus zur Berechnung des quartischen Restsymbols Proposition 4.1 h i y Seien x, y ∈ Z[i], 1 + i sei kein Teiler von x. Dann gilt: QUARTIC(x, y) berechnet x . h i y Beweis. Wenn x, y nicht teilerfremd sind, d. h. wenn xr 6∼ 1, dann ist x = 0. ′ xj+1 Seien nun also x, y teilerfremd. Es ist zu zeigen, daß s = eine Invariante der x′j Schleife ist. Dann folgt nach allen Schleifeniterationen (j = 0) in Q8: ′ ′ xj+1 x y = ′1 = s= , ′ xj x0 x da alle Berechnungen zu s nur von den auftretenden Restklassen Z[i]/8Z[i] abhängen (siehe Theorem 3.15). x′j+1 . Wir zeigen nun, daß dann in Abhängigkeit von x′j−1 ein s für ein Es gelte s = x′j kleineres j berechnet wird (Q6 bzw. Q7 im Algorithmus): Wenn 1 + i ein Teiler von x′j−1 ist, dann ist x′j nach Lemma 3.16 nicht durch 1 + i teilbar. Es folgt aus Theorem 3.15: ′ ′ xj−1 xj+1 ′ ·σ = ′ , σ := σ(x′j−2 , x′j−1 , qj−1 ), s·σ = ′ xj xj−2 wobei nach Lemma 3.16 x′j−2 nicht durch 1 + i teilbar ist. Wenn 1 + i kein Teiler von x′j−1 ist, dann folgt aus Theorem 3.15: ′ ′ xj+1 xj s·τ = · τ = , τ := τ (x′j−1 , x′j ). ′ ′ xj xj−1 Induktiv erhält man, daß bei jedem Schleifendurchlauf 1 + i kein Teiler von xj ist. Theorem 4.2 Seien x, y ∈ Z[i] gegeben, 1+i sei kein Teiler von x. Der Betrag der Real- und Imaginärteile von x und y sei durch 2n beschränkt. Dann ist die Laufzeit zur Berechnung des quartischen Restsymbols mittels Algorithmus QUARTIC durch O(µ(n) log n) beschränkt. Insbesondere benötigendie Schritte Q3 bis Q8 des Algorithmus QUARTIC lediglich die P Laufzeit O j size(qj ) . Beweis. Benutzt man zur g.g.T.-Berechnung von x, y in Q2 den in 2.1.3vorgestellten schnellen g.g.T.-Algorithmus CIDESCENT, so erfordert dieser Schritt O(µ(n) log n) Laufzeit. Das Berechnen von qj′ aus der Kodierung von qj benötigt die Laufzeit, die notwendig ist, um qj zu lesen, also O(size(qj )) Zeit. Die Berechnung von x′j−1 benötigt dann eine konstante Laufzeit, da die dazu verwendeten Operanden qj′ , x′j , x′j+1 beschränkte (und zudem kleine) Real- und Imaginärteile haben. Ob x′j−1 durch 1 + i teilbar ist, ist in konstanter Zeit durch Vergleich jeweils des untersten Bits von Real- und Imaginärteil von x′j−1 zu ermitteln. Die Abbildungen σ bzw. τ können als endliche Tabellen angesehen werden, so daß das Ermitteln der entsprechenden Einheit auch nur konstante Zeit erfordert. Anhang A Implementierung des Algorithmus Die dem Algorithmus zugrundeliegende Routine ist eine schnelle g.g.T.-Berechnung in Z[i] mit Abspeicherung der Quotientensequenz, aus welcher dann recht elementar das quartische Restsymbol berechnet wird. Da wir in [Wei99] einen asymptotisch schnellen g.g.T.-Algorithmus für Z[i] entwickelt und in TPAL (“Turing Processing Assembly Language”, für eine Beschreibung der Sprache und des Berechnungsmodells siehe [SGV94]) implementiert haben, implementieren wir den Algorithmus QUARTIC ebenfalls in TP, um die schnelle g.g.T.-Routine DCIGCDQ benutzen zu können. A.1 TP-Quellcode der Routine QUARTIC h i y Die Routine QUARTIC berechnet zu x, y ∈ Z[i], 1 + i ∤ x, das quartische Restsymbol x . Dazu wird zuerst der schnelle g.g.T.-Algorithmus DCIGCDQ aufgerufen, der einen g.g.T. g ∼ gcd(x, y) von x und y berechnet und die dabei ermittelte Quotientensequenz auf Band 3 ablegt. Anschließend wird überprüft, ob g ∼ 1 ist. Wenn x und y hingegen nichttriviale Teiler besitzen, so ist das Restsymbol gleich 0. Wenn aber x und y teilerfremd sind, dann wird genau so vorgegangen, wie bei Algorithmus QUARTIC beschrieben: Setze xr+1 := g, xr := g. Aus dem g.g.T. und der Quotientensequenz werden sukzessive Restklassen x′j berechnet, die jeweils die Z[i]/8Z[i]-Restklasse von xj repräsentieren. In Abhängigkeit davon, ob ggf. ein auftretendes x′j durch 1 + i teilbar ist oder nicht, wird eine Modifikation gemäß Theorem 3.15 bzw. gemäß Korollar B.10 vorgenommen. Die dabei auftretenden Abbildungen σ, τ sind durch TP-Tabellen realisiert, ebenso die Multiplikation bzw. Addition in Z[i]/8Z[i]. Seien f2 , f3 Abbildungen, die durch Tabellen realisiert werden, und die von 2 bzw. 3 Restklassen Z[i]/8Z[i] abhängen. Die Berechnung der Abbildung mittels Tabellenlesen geschieht über eine Indexberechnung des Tabelleneintrages (natürliche Zahl) wie folgt: f2 (x′ , y ′) = TABf2 [x′0 + 23 x′1 + 26 y0′ + 29 y1′ ], f3 (x′ , y ′, q ′ ) = TABf3 [x′0 + 23 x′1 + 26 y0′ + 29 y1′ + 212 q0′ + 215 q1′ ], wobei x′ , y ′, q ′ ∈ Z[i]/8Z[i] und x′j , yj′ , qj′ ∈ {0, . . . , 7} für j ∈ {0, 1} sind. Die Tabellen ZIAD8, ZIML8 und TAU hängen jeweils von zwei Restklassen ab und haben je 212 = 4096 Einträge; die Tabelle SIGMA hängt von drei Restklassen ab und besitzt 218 = 262144 Einträge. Bei den Tabellen TAU und SIGMA sind nicht für alle Indizes gültige Einträge definiert. 37 38 A Implementierung des Algorithmus x ∈ Z[i], 1 + i ∤ x, im ci-code auf T1 , p1 auf dem Topwort; y ∈ Z[i] im ci-code auf T2 , p2 auf dem Topwort; p3 , p4 stacky. Rückgabe: hg ∼i gcd(x, y) im ci-code auf T1 und T2 , p1 , p2 jeweils auf dem Topwort; y K x = E·i , d. h. E = 0 genau dann, wenn das quartische Restsymbol gleich 0 ist (x und y sind nicht teilerfremd); andernfalls ist E = 1, und K gibt den Exponenten an, so daß iK dem Wert des Restsymbols entspricht; p3 , p4 wie vorher (durch den g.g.T.-Algorithmus berechnete Quotientensequenz auf T3 wird gelöscht). Laufzeit: ≤ O(µ(n) log n), sofern size(x), size(y) ≤ n. Eingabe: DEF .bits1 =3 .bits2 =6 , DEF .bitmask1 =7 \ .bitmask2 =63 , P.QUARTIC: JP.DCIGCDQ, #ifdef TIMING TI0, TA+2, TCA+1, TCA+1, TCA+1, TCA+1, TA+253, LA =0, P3-, : LC 3-, JHC /, P3-C, AD =1, AD .C, J, : P3+2, P3+A, JA Z.NOQUOT, LC .A, : TU+1, JCM, NOQUOT: TA+1, TI1, 3 Bits pro Real- bzw. Imaginärteil bitmaskX = 2bitsX − 1 Berechnung von g := gcd(x, y), g → T1 , T2 4 neue Timer tk+3 , . . . , tk+6 tk+3 aktueller Timer Anzahl Worte Quotientensequenz durchgehen tk+3 := A tk+4 aktueller Timer #endif IML0: IML1: LA 1, LB 2, JPNEQ.ALARM, LK =0, LB =2, JNLS.GNEQU, P1-, P2-, K P, JA .IML1, LA 1, LB 2, JPNEQ.ALARM, LB =1, JNEQ.GNEQU, P1-, P2-, K P, LA 1, LB 2, JPNEQ.ALARM, LB =1, JEQ.POK, LB =-1, JEQ.POK, J.GNEQU, LA 1, LB 2, JPNEQ.ALARM, LB =1, JEQ/, LB =-1, JEQ/, J.GNEQU, : P1-, P2-, K P, LA 1, LB 2, JPNEQ.ALARM, JA .GNEQU, Imaginärteile unterschiedlicher Länge? A ≥ 2 : g.g.T. keine Einheit Realteile unterschiedlicher Länge? A 6= 1 : g.g.T. keine Einheit Realteile lesen Realteile unterschiedlich? Realteil gleich 1? Realteil gleich -1? unterschiedliche Imaginärteile? Imaginärteil gleich 1? Imaginärteil gleich -1? Realteillängen lesen Realteillänge ungleich 0 A.1 TP-Quellcode der Routine QUARTIC POK: QRLOOP: 39 P1+K, P2+K, LK =0, P0+2, ADR .xjp1 .xj , Bandzeiger p1 , p2 zurücksetzen Platz für x′j+1 , x′j LCB 1, P1-B, LB 1-, SB Hbits1, LMA 1, P1-A, LA 1, AND =bitmask1, OR .B, AND =bitmask2, A T xj, A T xjp1, P1+M, P1+, P1+C, P3-, B : unterstes Wort vom Imaginärteil um bits1 geshiftet A : unterstes Wort vom Realteil nur 3 Bits berücksichtigen nur 6 Bits insgesamt auf T0 speichern Bandzeiger p1 zurücksetzen zum obersten Quotienten qr gehen LB 3, JHB .QREND, Abbruch, sofern Maske auf T3 erreicht #ifdef TIMING TA+1, TU+1, TA+255, Schrittzähler tk+5 erhöhen #endif P3-B, LB 3-, SB Hbits1, LA 3, P3-A, LA 3-, AND =bitmask1, OR .B, AND =bitmask2, Imaginärteil von qj′ Realteil von qj′ LB xj, SB Hbits2, OR .B, LA =A +ZIML8, Tabellenindex für Multiplikation A : qj′ x′j #ifdef TIMING TA+2, TU+1, TA+254, A : qj′ Tabellenzähler tk+6 erhöhen #endif LB xjp1, SB Hbits2, OR .B, LAC =A +ZIAD8, #ifdef TIMING TA+2, TU+1, TA+254, Tabellenindex für Addition C : x′j−1 = qj′ x′j + x′j+1 Tabellenzähler tk+6 erhöhen #endif SA Lbits1, EOR .C, AND =1, JA Z/, LA xj, A T xjp1, SA Hbits2, OR .C, LA =A +TAU, JPHA .ALARM, #ifdef TIMING TA+2, TU+1, TA+254, Re(x′j−1 ) ≡ Im(x′j−1 ) mod 2? A = 0 ⇐⇒ (1 + i) | x′j−1 neues x′j+1 A = (x′j−1 , x′j ) Tabellenindex Tabellenzähler tk+6 erhöhen 40 A Implementierung des Algorithmus #endif AD .K, LK .A, C T xj, J.QRLOOP, : C T xjp1, LB 3, JPHB .ALARM, P3-B, LB 3-, SB Hbits1, LA 3, P3-A, LA 3-, AND =bitmask1, OR .B, AND =bitmask2, LM .A, SA Hbits2, OR .C, LA =A +ZIML8, #ifdef TIMING TA+2, TU+1, TA+254, K modifizieren neues x′j x′j−1 sichern Fehler: x ist durch 1 + i teilbar ′ Imaginärteil von qj−1 ′ Realteil von qj−1 ′ A, M : qj−1 Tabellenindex für Multiplikation ′ A : qj−1 x′j−1 Tabellenzähler tk+6 erhöhen #endif LB xj, SB Hbits2, OR .B, LA =A +ZIAD8, A T xj, #ifdef TIMING TA+2, TU+1, TA+254, Tabellenindex für Addition ′ A : x′j−2 = qj−1 x′j−1 + x′j Tabellenzähler tk+6 erhöhen #endif LA .M, SA Hbits2, OR .C, SA Hbits2, OR xj, LA =A +SIGMA, JPHA .ALARM, #ifdef TIMING TA+2, TU+1, TA+254, ′ A = (x′j−2 , x′j−1 , qj−1 ) Tabellenzähler tk+6 erhöhen #endif QREND: AD .K, LK .A, J.QRLOOP, K modifizieren LA .K, AND =3, LK .A, E 1, P0-2, k := K mod 4 Rückgabe E·ik #ifdef TIMING TA+252, tk aktiver Timer #endif RTS, GNEQU: P1+K, P2+K, P3-, : LA 3-, JHA /, DP3-A, J, : P3+, E 0, LK =HFF, zum obersten Quotientenwort Längenwort mit Topbit gesetzt? E, K setzen A.2 Laufzeitmessung 41 #ifdef TIMING TA+252, tk aktiver Timer #endif RTS, END. Man hätte statt des Tabellenlesens natürlich auch die Addition und Multiplikation in jeweils berechnen können, allerdings erschien uns hier eine Implementierung mit Tabellen deutlich effizienter. Z[i]/8Z[i] Ebenso hätte man τ : (Z[i]/8Z[i])2 → Z[i]× und σ : (Z[i]/8Z[i])3 → Z[i]× in jedem Schritt in konstanter Zeit berechnen können, aber auch hierbei erschien uns die Variante mit Tabellen wesentlich effizienter. Die Tabellen zur Addition und Multiplikation in Z[i]/8Z[i] sowie σ und τ wurden mittels eines C-Programms gemäß der angegebenen Definitionen berechnet. A.2 Laufzeitmessung In diesem Abschnitt diskutieren wir abschließend Laufzeitmessungen, die wir für die TPRoutine QUARTIC vorgenommen haben. Für eine genaue Beschreibung des Komplexitätsmaßes, welches TP zur Verfügung stellt, sei auf [SGV94] bzw. auf die kurze Zusammenfassung in [Wei99, Abschnitt 1.5.4] verwiesen. Aufgrund der TP-internen Einheit tu (“time units”; Mtu steht für “mega time units”) zur Laufzeitmessung, mit der alle TPInstruktionen bewertet werden, ermöglicht das Maschinenmodell TP recht genaue Laufzeitanalysen. Die so ermittlte TP-Laufzeit eines Algorithmus ist quasi proportional zu der realen Laufzeit auf heutigen Computern.1 Man erkennt in Tabelle A.1 (S. 42), daß sich die Laufzeit des Algorithmus QUARTIC fast ausschließlich durch die Laufzeit der g.g.T.-Berechnung t1 ergibt. Die Laufzeit t2 zur Berechnung des Restsymbols (ohne Laufzeitbewertung des Tabellenlesens) beträgt für große Operanden mit n ≥ 8000 Worten bei Real- und Imaginärteil weniger als ein Tausendstel der Laufzeit t1 . Asymptotisch gesehen würde sich nicht einmal etwas an der mit der O-Notation verbundenen Konstanten ändern, wenn die Berechnung der Zusatzfaktoren (d. h. Hilbert-Symbole) von größeren Restklassen abhängen würde. Dann könnte allerdings eine Realisierung mit Tabellen problematisch sein, da die Tabellen deutlich größer würden. Man könnte deswegen zu einer gepackten Speicherung der Einheiten in den Tabellen übergehen oder die Hilbert-Symbole jeweils in konstanter Zeit in Abhängigkeit von den Operandenrestklassen berechnen. 1 Eine TP-Implementierung unter dem Betriebssystem „Linux“ auf einem Computer mit Intel Pentium II/400 MHz Prozessor erreicht eine Performance von ungefähr 300 Mtu/sec. 42 A Implementierung des Algorithmus Tabelle A.1: Laufzeit-/Iterationsanalyse der Routine QUARTIC bei Zufallsoperanden x, y ∈ Z[i] mit jeweils n Worten bei Real- und Imaginärteil, relativ prim zueinander und x nicht durch 1 + i teilbar n 1 2 4 6 8 10 20 50 100 200 500 1000 1500 2000 3000 4000 5000 8000 10000 20000 40000 100000 200000 400000 1000000 g.g.T.-Berechnung (Berechnung der Quotientensequ.) Laufzeit EuklidLänge schritte Quot.Sequ. Mtu 0.1 0.2 0.6 1.2 1.9 2.4 5.6 17.4 41.9 100.5 360.5 827.2 1443.3 2040.4 3334.0 4940.5 6501.3 11279.2 15293.5 35486.2 82176.5 258151.4 597068.3 1380543.6 3775554.5 Anzahl 21 40 77 126 176 226 447 1156 2263 4629 11443 22846 34489 45724 69059 91309 114133 183288 228617 456532 913279 2303150 4606640 9215861 22884201 Wortanzahl 77 153 292 482 674 864 1703 4436 8696 17799 44019 87792 132807 175797 265554 351124 438447 704708 878750 1754931 3510377 8861323 17726255 35463173 87993673 Berechnung Restsymbol aus Quotientensequenz Laufzeit Schleifen- Tabelleniterationen lesen Mtu 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.3 0.7 1.4 2.1 2.7 4.1 5.4 6.8 10.9 13.6 27.2 54.4 138.0 276.0 552.3 1366.2 Anzahl 14 26 51 89 131 163 314 828 1633 3317 8242 16521 24868 32913 49852 65713 82232 132284 164474 328498 657137 1666964 3332834 6669936 16491973 Anzahl 56 106 209 355 507 639 1262 3320 6497 13347 32964 65871 99702 131697 199436 263069 328496 528594 658122 1314366 2628949 6666222 13332240 26675468 65972091 Algorithmus QUARTIC Gesamtlaufzeit2 Mtu 0.1 0.2 0.6 1.2 1.9 2.4 5.6 17.5 42.1 100.8 361.5 829.1 1446.2 2044.1 3339.7 4948.0 6510.7 11294.3 15312.4 35523.9 82252.0 258342.8 597451.0 1381309.3 3777448.5 Wir wollen nun noch genauer untersuchen, wie die Laufzeit t2 bzw. die Gesamtlaufzeit t von der Laufzeit bzw. der Anzahl der Euklidschritte der g.g.T.-Berechnung abhängen. Dazu führen wir zuerst einige Bezeichnungen ein: ES : QS : SI : TL : Anzahl Euklidschritte, Länge der Quotientensequenz, Anzahl der Schleifeniterationen bei der Berechnung des Restsymbols aus der Quotientensequenz, Anzahl Tabellenlesen. Nun kann man aus Tabelle A.1 ablesen, daß QS ≈ 3.85·ES ist. Dieses erklärt sich dadurch, daß die berechneten Quotienten fast immer recht klein sind, aber ungleich 0 sind, 2 Die Gesamtlaufzeit ergibt sich als Summe der Laufzeit der g.g.T.-Berechnung, der Laufzeit zur Berechnung des Restsymbol aus der Quotientensequenz und der angenommen Zeit für das Tabellenlesen, wobei einmaliges Tabellenlesen mit 8 tu (Erfahrungswert aus Implementierungsdetails des Tabellenlesens) bewertet wird. A.2 Laufzeitmessung 43 so daß dann ein im ci-code abgespeicherter Quotient 3 bis 4 Worte benötigt (abhängig davon, ob sowohl Real- als auch Imaginärteil ungleich 0 sind). Des weiteren ist t2 ≈ QS·15.57 tu, d. h. im Durchschnitt benötigt die Behandlung eines Quotienten bei der Berechnung des Restsymbols 15.57 tu (ohne Laufzeit für das Tabellenlesen). Pro Schleifeniteration erfolgt entweder dreimaliges oder fünfmaliges Tabellenlesen, abhängig davon, ob der eine Operand durch 1 + i teilbar ist oder nicht. Nun ist eine zufällige Gaußsche Zahl mit Wahrscheinlichkeit 12 durch 1 + i teilbar, so daß im Durchschnitt viermaliges Tabellenlesen pro Iteration notwendig ist, was durch Tabelle A.1 bestätigt wird: T L ≈ 4·SI. Offensichtlich ist die Anzahl der Schleifeniterationen kleiner als die Anzahl der Euklidschritte (wobei auch ein Vertauschen der Operanden als Euklidschritt mitgezählt wird), da in ca. der Hälfte der Schleifeniterationen zwei aufeinanderfolgende Quotienten der Quotientensequenz zur Berechnung benötigt werden. Man erhält aus Tabelle A.1: ES ≈ 1.38·SI. Insgesamt kann man aus diesen Überlegungen die ungefähre typische Laufzeit t mit t2 ≈ ES·3.85·15.57 tu, t ≈ t1 + t2 + T L·8 tu ≈ t1 + ES·3.85·15.57 tu + ES/1.38·4·8 tu ≈ t1 + ES·83.13 tu angeben. 44 A Implementierung des Algorithmus Anhang B Elementarer Beweis des Theorems 3.15 Während wir im Hauptteil dieser Arbeit zum Beweis des Theorems 3.15 tiefliegende zahlentheoretische Hilfsmittel (Klassenkörpertheorie, Hilbert-Symbol) benutzt haben, wollen wir nun noch einen elementaren Beweis des Theorems 3.15 darstellen, der allerdings an einigen Stellen recht handwerklich ist und längere Rechnungen enthält. Definition B.1 Seien x, y ∈ Z[i], x nicht durch 1 + i teilbar, y durch 1 + i teilbar. Für k ∈ Z definiere z (k) := ky − x, w (k) := iky − x. Lemma B.1 Seien x, y ∈ Z[i], x nicht durch 1 + i teilbar, y durch 1 + i teilbar. Dann ist (k) (k) (k) (k) z0 6≡ z1 mod 2 und w0 6≡ w1 mod 2. (k) Beweis. Es ist x0 6≡ x1 , y0 ≡ y1 mod 2. Für j ∈ {0, 1} gilt zj (k) = kyj − xj . (k) z0 = ky0 − x0 ≡ ky1 − x0 6≡ ky1 − x1 = z1 mod 2. Für w (k) erhält man als Zerlegung in Real- und Imaginärteil w (k) = iky − x = ik(y0 + iy1 ) − (x0 + ix1 ) = −ky1 − x0 + i(ky0 − x1 ). Damit gilt (k) (k) w0 = −ky1 − x0 ≡ ky1 − x0 6≡ ky0 − x1 = w1 mod 2. Nun werden wir eine wichtige Proposition beweisen, die angibt, um welche Einheit sich y y y von bzw. von ((1 + i) ∤ x, (1 + i) | y) x y+x iy + x 45 46 B Elementarer Beweis des Theorems 3.15 unterscheidet. Sei nun x = qy + z. Iteriert man solche Reduktionschritte geeignet (und multipliziert die dabei auftretenden Zusatzfaktoren, d. h. Einheiten), so erhält man als Zusatzfaktor die Einheit, um die sich y y y y von und dieses wiederum von = x −q0 y + x −iq1 y + (−q0 y + x) z unterscheidet. Proposition B.2 Seien x, y ∈ Z[i], wobei x0 6≡ x1 mod 2 und y0 ≡ y1 mod 2 (d. h. 1 + i teilt y) ist. Sei k ∈ Z. Dann existieren eindeutig εk , δk ∈ Z[i]× , so daß εk (ky − x) bzw. δk (iky − x) primär sind. Des weiteren gilt 3 εk+1 y −εk y = · , sk εk (ky − x) εk (ky − x) εk+1((k + 1)y − x) εk+1 ((k + 1)y − x) 3 y iδk+1 y −iδk = · , tk δk (iky − x) δk (iky − x) δk+1 (i(k + 1)y − x) δk+1 (i(k + 1)y − x) wobei sk , tk ∈ {−1, +1} definiert sind als −1 εk (ky − x) εk+1 ((k + 1)y − x) , sk := εk (ky − x) εk+1 ((k + 1)y − x) −1 δk (iky − x) δk+1 (i(k + 1)y − x) . tk := δk (iky − x) δk+1 (i(k + 1)y − x) Beweis. Nach Lemma B.1 haben Real- und Imaginärteil von ky − x bzw. iky − x unterschiedliche Parität, also existieren nach Korollar 3.2 eindeutig εk , δk ∈ Z[i]× , so daß εk (ky − x) bzw. δk (iky − x) primär sind. Unter Verwendung von Theorem 3.7 erhält man y y + ε−1 (k + 1)y − x k ·εk (ky − x) = = εk (ky − x) εk (ky − x) εk (ky − x) 3 εk+1((k + 1)y − x) εk+1 · = εk (ky − x) εk (ky − x) 3 εk (ky − x) εk+1 sk · = εk (ky − x) εk+1((k + 1)y − x) 3 εk (ky − x) − (ε−1 εk+1 k+1 εk )εk+1 ((k + 1)y − x) sk · = εk (ky − x) εk+1 ((k + 1)y − x) 3 −εk y εk+1 sk · = εk (ky − x) εk+1((k + 1)y − x) 3 εk+1 y −εk = · . sk εk (ky − x) εk+1((k + 1)y − x) εk+1 ((k + 1)y − x) y i3 iy = · δk (iky − x) δk (iky − x) δk (iky − x) 47 iy + δk−1 ·δk (iky − x) i3 · = δk (iky − x) δk (iky − x) 3 i(k + 1)y − x i · = δk (iky − x) δk (iky − x) 3 iδk+1 δk+1 (i(k + 1)y − x) = · δk (iky − x) δk (iky − x) 3 δk (iky − x) iδk+1 tk · = δk (iky − x) δk+1 (i(k + 1)y − x) 3 −1 δk (iky − x) − (δk+1 δk )δk+1 (i(k + 1)y − x) iδk+1 tk · = δk (iky − x) δk+1 (i(k + 1)y − x) 3 iδk+1 −iδk y = tk · δk (iky − x) δk+1 (i(k + 1)y − x) 3 y −iδk iδk+1 · . tk = δk (iky − x) δk+1 (i(k + 1)y − x) δk+1 (i(k + 1)y − x) Definition B.2 Sei x ∈ Z[i] primär, y ∈ Z[i] durch 1 + i teilbar. Sei k ∈ Z. Definiere R(k+1) , I (k+1) ∈ Z[i]× wie folgt1 als 3 εk+1 −εk (k+1) (k+1) R := R (x, y) := , sk εk (ky − x) εk+1((k + 1)y − x) 3 −iδk iδk+1 (k+1) (k+1) . tk I := I (x, y) := δk (iky − x) δk+1 (i(k + 1)y − x) Des weiteren definiere Rk , Ik ∈ Z[i]× als (Q k R(κ) Rk := Rk (x, y) := Qκ=1 0 (κ) −1 κ=k+1 R (Q k I (κ) Ik := Ik (x, y) := Qκ=1 0 (κ) −1 κ=k+1 I wenn k ≥ 0, wenn k < 0, wenn k ≥ 0, wenn k < 0. Bemerkung. Nach Proposition B.2 gilt y y (k+1) =R · , εk (ky − x) εk+1 ((k + 1)y − x) y y (k+1) =I · . δk (iky − x) δk+1 (i(k + 1)y − x) Induktiv erhält man aus diesen Gleichungen y y y y = Rk · , = Ik · . x εk (ky − x) x δk (iky − x) 1 Zur verkürzenden Schreibweise werden wir die Argumente x, y von R(k+1) , I (k+1) häufig weglassen. 48 B Elementarer Beweis des Theorems 3.15 Wir werden nun explizite Ausdrücke für εk , δk ∈ Z[i]× sowie Re(εk z (k) ), Re(δk w (k) ) angeben, um damit Aussagen über Rk , Ik ∈ Z[i]× zu beweisen. Ist x = qy + z, so werden wir Rq0 und Iq1 (zu verschiedenen Parametern) benutzen, um daraus den Zusatzfaktor zu berechnen, um den sich y y y und = x x − qy z unterscheiden. Lemma B.3 Seien x, y ∈ Z[i], x primär und y durch 1 + i teilbar. Sei k ∈ Z. Seien εk , δk ∈ Z[i]× , so daß εk ·z (k) und δk ·w (k) primär sind. Es gilt: εk = εk+2 und δk = δk+2 . Insbesondere ist ε0 = δ0 = −1. Beweis. Es gilt z (k+1) = (k + 1)y − x = y + z (k) . Nach Proposition 3.1 erhält man (k+1) +z1 (k) (k) εk+1 = iz0 = iz0 (k+1) (k+1) 2 −z1 (k) 2 +z1 −z1 +3 (k) = iy0 +z0 (k) (k) +3+y0 +y1 −y12 −2y1 z1 2 2 2 2 εk+2 = iy0 +y1 −y1 −2(k+1)y1 +2x1 y1 ·εk+1 (k) +y1 +z1 −(y1 +z1 )2 +3 2 2 = iy0 +y1 −y1 −2ky1 +2x1 y1 ·εk , 2 2 = iy0 +y1 −y1 −2(k+1)y1 +2x1 y1 ·iy0 +y1 −y1 −2ky1 +2x1 y1 ·εk 2 2 2 = i2(y0 +y1 )−2y1 −4ky1 −2y1 +4x1 y1 ·εk = εk , da y0 + y1 ≡ 0 mod 2 ist. (k) (k) Analog zeigt man die Behauptung für δk . Es gilt w (k+1) = w (k) +iy = w0 −y1 +i(w1 +y0 ). Nach Proposition 3.1 erhält man (k+1) δk+1 = iw0 (k) = iw0 (k+1) +w1 (k) (k) 2 +w1 −w1 (k+1) 2 −w1 +3 (k) = iw0 (k) (k) +3+y0 −y1 −y02 −2y0 w1 2 2 2 2 (k) −y1 +w1 +y0 −(w1 +y0 )2 +3 δk+2 = iy0 −y1 −y0 −2(k+1)y0 +2x1 y0 ·δk+1 2 2 2 = iy0 −y1 −y0 −2ky0 +2x1 y0 ·δk , 2 = iy0 −y1 −y0 −2(k+1)y0 +2x1 y0 ·iy0 −y1 −y0 −2ky0 +2x1 y0 ·δk 2 2 = i2(y0 −y1 )−4ky0 −4y0 +4x1 y0 ·δk = δk , da y0 − y1 ≡ 0 mod 2 ist. Seien x, y ∈ Z[i], x primär und y durch 1 + i teilbar. Die zu z (k) primäre Gaußsche Zahl sei mit ẑ (k) := εk z (k) bezeichnet. Konkret erhalten wir mit Hilfe der Rechnung im Beweis zu Lemma B.3 k gerade, x − ky 2 −2(k−1)y 2 +2x y (k) y +y −y 0 1 1 1 1 1 ẑ = εk (ky − x) = i εk−1 (ky − x) y0 +y1 −y12 =i (x − ky) k ungerade, 49 denn falls k ungerade ist, ist k − 1 gerade und εk−1 = −1, so daß −2(k − 1)y12 ≡ 0 mod 4 (k) und 2x1 y1 ≡ 0 mod 4 ist. Damit läßt sich ẑ0 := Re ẑ (k) explizit angeben als k gerade, x0 − yky+y0 0 1 (k) ẑ0 = (−1) 2 (x0 − ky0 ) k ungerade, y1 gerade, y0 +y1 (−1) 2 (x1 − ky1 ) k ungerade, y1 ungerade, da −y12 kongruent 0, 3 mod 4 (in Abhängigkeit von der Parität von y1 ) und y0 + y1 gerade ist. Die zu w (k) primäre Gaußsche Zahl sei mit ŵ (k) := δk w (k) bezeichnet. Die Berechnung (k) (k) von ŵ0 verläuft ganz analog zu der Berechnung von ẑ0 . Konkret erhalten wir mit Hilfe der Rechnung im Beweis zu Lemma B.3 k gerade, x − iky 2 2 (k) w = δk (iky − x) = iy0 −y1 −y0 −2(k−1)y0 +2x1 y0 δk−1 (iky − x) 2 = iy0 −y1 −y0 (x − iky) k ungerade, denn falls k ungerade ist, ist k − 1 gerade und δk−1 = −1, so daß −2(k − 1)y02 ≡ 0 mod 4 (k) und 2x1 y0 ≡ 0 mod 4 ist. Damit läßt sich ŵ0 := Re ŵ (k) explizit angeben als k gerade, x0 + yky−y1 0 1 (k) ŵ0 = (−1) 2 (x0 + ky1 ) k ungerade, y0 gerade, y0 −y1 (−1) 2 (x1 − ky0 ) k ungerade, y0 ungerade, da −y02 kongruent 0, 3 mod 4 (in Abhängigkeit von der Parität von y0 ) und y0 − y1 gerade ist. Lemma B.4 Sei k ≡ 0 mod 4. Seien x ∈ Z[i] primär und y ∈ Z[i] durch 1 + i teilbar fest gewählt. Dann ist R(k) ·R(k+1) ·R(k+2) ·R(k+3) ∈ {−1, +1} unabhängig von k. Beweis. Zum Beweis werden wir die einzelnen Restsymbole geeignet berechnen. R (k) R(k+1) R(k+2) R(k+3) (k−1) −1 ẑ (k) ẑ −εk−1 , = (k−1) ẑ ẑ (k−1) ẑ (k) ẑ (k) 3 (k+1) (k) −1 ẑ ẑ −εk εk+1 , = ẑ (k) ẑ (k) ẑ (k+1) ẑ (k+1) 3 (k+2) (k+1) −1 εk+2 ẑ ẑ −εk+1 = (k+1) , ẑ ẑ (k+1) ẑ (k+2) ẑ (k+2) 3 (k+3) (k+2) −1 ẑ ẑ −εk+2 εk+3 . = (k+2) ẑ ẑ (k+2) ẑ (k+3) ẑ (k+3) εk 3 Setze j := y1 mod 2, j ∈ {0, 1}. Dann ist für ungerades l ∈ Z ẑ0 = (−1) 2 (xj − lyj ). Zuerst berechnen wir das Produkt der ersten und letzten Faktoren der vier Gleichungen. Dabei fassen wir für κ ∈ {0, 1, 2} den letzten Faktor obiger Darstellung von R(k+κ) mit dem ersten Faktor von R(k+κ+1) zusammen, da εk+κ−1 = εk+κ+1 ist. Dabei erhalten wir (l) y0 +y1 50 B Elementarer Beweis des Theorems 3.15 jeweils −ε4k+κ−1 = −1 im Restsymbol. Den ersten Faktor von R(k) und den letzten Faktor von R(k+3) behandeln wir getrennt. 3 3 3 3 −εk−1 εk+1 −εk εk+2 −εk+1 εk+3 −εk+2 ẑ (k−1) ẑ (k) ẑ (k) ẑ (k+1) ẑ (k+1) ẑ (k+2) ẑ (k+2) ẑ (k+3) −1 −1 −1 −1 1 = (k−1) · (k) · (k+3) (k+1) (k+2) ẑ ẑ ẑ ẑ ẑ εk (k−1) =i1−ẑ0 =i−(−1) =i−(−1) (k) (k+1) +1−ẑ0 +1−ẑ0 y0 +y1 2 y0 +y1 2 (k+2) +1−ẑ0 (k−1) = i−ẑ0 (k) (k+1) −ẑ0 −ẑ0 (k+2) −ẑ0 (xj −(k−1)yj +xj −(k+1)yj )−(x0 −ky0 )−(x0 −(k+2)y0 ) (2xj −2kyj )−(2x0 −2ky0 −2y0 ) = (−1)−(−1) y0 +y1 2 xj −x0 +y0 = 1, (B.1) da bei j = 0 c·x0 mit c ∈ {0, −2} im Exponenten zu (−1) auftritt. Damit ist cx0 + y0 gerade. Ist hingegen j = 1, so ist y0 ungerade. Dann ist aber xj gerade, da x primär ist, sowie −x0 + y0 gerade. Weiterhin berechnet man (k−1) −1 (k+1) (k) −1 (k+2) (k+1) −1 (k+3) (k+2) −1 ẑ (k) ẑ ẑ ẑ ẑ ẑ ẑ ẑ ẑ (k−1) ẑ (k) ẑ (k) ẑ (k+1) ẑ (k+1) ẑ (k+2) ẑ (k+2) ẑ (k+3) =(−1)A ∈ {−1, +1}, (B.2) da für den Exponenten (k−1) (k) (k) (k+1) −1 − 1 ẑ0 − 1 ẑ0 − 1 ẑ0 · + · + 2 2 2 2 (k+2) (k+2) (k+3) (k+1) − 1 ẑ0 − 1 ẑ0 −1 ẑ0 − 1 ẑ0 · + · 2 2 2 ! 2 ! (k) (k+2) (k+1) (k+3) (k−1) (k+1) ẑ0 − 1 ẑ0 ẑ0 − 1 ẑ0 −1 −1 − 1 ẑ0 − 1 ẑ0 = + · + · + 2 2 2 2 2 2 (k) ẑ (k+2) − 1 y0 +y1 y0 +y1 ẑ0 − 1 0 2 2 (xj − 1) + (xj − 1) ≡ · (−1) · (−1) 2 2 ≡ (x0 − 1 − y0 )(xj − 1) mod 2 A := ẑ0 gilt. Also ist A insbesondere unabhängig von k. Aus den Gleichungen (B.1) und (B.2) folgt nun die Behauptung. Lemma B.5 Sei k ≡ 0 mod 4. Seien x ∈ Z[i] primär und y ∈ Z[i] durch 1 + i teilbar fest gewählt. Dann ist I (k) ·I (k+1) ·I (k+2) ·I (k+3) = 1 unabhängig von x, y, k. 51 Beweis. Zum Beweis werden wir die einzelnen Restsymbole geeignet berechnen. 3 (k) (k−1) −1 iδk ŵ ŵ −iδk−1 (k) I = , ŵ (k−1) ŵ (k−1) ŵ (k) ŵ (k) 3 (k+1) (k) −1 ŵ ŵ −iδk iδk+1 (k+1) , I = ŵ (k) ŵ (k) ŵ (k+1) ŵ (k+1) 3 (k+2) (k+1) −1 iδk+2 ŵ ŵ −iδk+1 (k+2) I = , ŵ (k+1) ŵ (k+1) ŵ (k+2) ŵ (k+2) 3 (k+3) (k+2) −1 ŵ ŵ −iδk+2 iδk+3 (k+3) . I = ŵ (k+2) ŵ (k+2) ŵ (k+3) ŵ (k+3) Setze j := y0 mod 2, j ∈ {0, 1}. Für ungerades l ∈ Z in erhält man dann ŵ0 = y0 −y1 (−1) 2 (xj + (−1)j ·l·y1−j ). Zuerst berechnen wir das Produkt der ersten und letzten Faktoren der vier Gleichungen. Dabei fassen wir für κ ∈ {0, 1, 2} den letzten Faktor obiger Darstellung von I (k+κ) mit dem ersten Faktor von I (k+κ+1) zusammen, da δk+κ−1 = δk+κ+1 4 ist. Dabei erhalten wir jeweils −i4 δk+κ−1 = −1 im Restsymbol. Den ersten Faktor von (k) (k+3) I und den letzten Faktor von I behandeln wir getrennt. 3 3 3 3 iδk −iδk−1 iδk+1 −iδk iδk+2 −iδk+1 iδk+3 −iδk+2 ŵ (k−1) ŵ (k) ŵ (k) ŵ (k+1) ŵ (k+1) ŵ (k+2) ŵ (k+2) ŵ (k+3) −1 −1 −1 i i · · = (k−1) (k) (k+1) (k+2) (k+3) ŵ ŵ ŵ ŵ ŵ (l) =i (k−1) 1−ŵ0 2 + (k+3) 1−ŵ0 2 1 y0 −y1 2 1 y0 −y1 2 =i− 2 (−1) =i− 2 (−1) (k+1) =i−2ŵ0 (k) (k+1) +1−ŵ0 +1−ŵ0 (k+2) +1−ŵ0 (k) (k+1) (xj +(−1)j (k−1)y1−j +xj +(−1)j (k+3)y1−j )−ŵ0 −ŵ0 (k) (k+1) (2xj +(−1)j (2k+2)y1−j )−ŵ0 −ŵ0 (k) −2ŵ0 −2y1 (k+1) = (−1)−ŵ0 (k) −ŵ0 −y1 (k+2) −ŵ0 (k+2) −ŵ0 = (−1)−y1 = (−1)j , (κ) (B.3) da immer ŵ0 ≡ 1 mod 2 ist. Weiterhin berechnet man (k) (k−1) −1 (k+1) (k) −1 (k+2) (k+1) −1 (k+3) (k+2) −1 ŵ ŵ ŵ ŵ ŵ ŵ ŵ ŵ (k−1) (k) (k) (k+1) (k+1) (k+2) (k+2) ŵ ŵ ŵ ŵ ŵ ŵ ŵ ŵ (k+3) =(−1)B = (−1)j , (B.4) da für den Exponenten B (k−1) (k) (k) (k+1) −1 − 1 ŵ0 − 1 ŵ0 − 1 ŵ0 · + · + 2 2 2 2 (k+1) (k+2) (k+2) (k+3) ŵ0 − 1 ŵ0 − 1 ŵ0 − 1 ŵ0 −1 · + · 2 2 2 ! 2 (k) (k+1) (k−1) ŵ − 1 ŵ0 −1 − 1 ŵ0 = 0 + · + 2 2 2 ! (k+3) (k+2) (k+1) −1 ŵ0 − 1 ŵ0 − 1 ŵ0 · + 2 2 2 B := ŵ0 52 B Elementarer Beweis des Theorems 3.15 (k+2) (k) ŵ −1 ŵ − 1 ·(xj − 1) + 0 ·(xj − 1) ≡ 0 2 2 ≡ (x0 + y1 − 1)(xj − 1) ≡ j mod 2 gilt (wegen xj − 1 ≡ x0 + y1 − 1 ≡ j mod 2). Insbesondere ist B unabhängig von k. Da (−1)2j = 1 ist, folgt aus den Gleichungen (B.3) und (B.4) die Behauptung. Lemma B.6 Sei k ∈ Z gegeben, sei k ′ := k mod 8, k ′ ∈ {0, . . . , 7}. Dann ist Rk = Rk′ , (zu x, y ∈ Z[i], x primär, (1 + i) | y). Ik = Ik ′ Beweis. Sei κ ∈ Z. Aus Proposition 3.8 folgt, daß (λ ∈ Z) R(κ) = R(κ+8λ) ist, da die auftretenden Restsymbole lediglich vom Real- und Imaginärteil modulo 8 der Operanden abhängen (2. Ergänzungsgesetz wird dabei nicht benötigt). Aufgrund des Lemmas B.4 wissen wir, daß für κ′ ∈ 4Z gilt: 7 Y ′ R(κ +j) = 1. j=0 Zerlege k = 8k ′′ + k ′ mit k ′′ ∈ Z. Damit erhält man für k ≥ 0: Rk = k Y ′′ R(κ) = R −1 Y 7 kY (0) −1 ′ R (8j+j ′ ) j=0 j ′ =0 κ=1 = R(0) −1 k′ Y R(8k ′′ +j) = j=0 | k′ Y {z =1 } · k Y R(8k ′′ +j) j=0 R(j) = Rk′ j=1 bzw. für k < 0 (d. h. k ′′ < 0) Rk = 0 Y R(κ) κ=k+1 = R (0) 1 Y !−1 R κ=8k ′′ (κ) 0 Y = R(κ) κ=8k ′′ +k ′ +1 !−1 · ′′ +k ′ 8kY j=8k ′′ R !−1 = 1 Y R(0) κ=8k ′′ +k ′ +1 ′ (j) = R (0) −1 R(κ) k Y j=0 R (j) = ′ k Y R(j) = Rk′ . j=1 Der Beweis für Ik verläuft ganz analog unter Benutzung von Lemma B.5. Bemerkung. Sei x ∈ !−1 Z[i] primär, y ∈ Z[i] durch 1 + i teilbar. Sei x = qy + z, wobei 53 q, z ∈ Z[i] sind. y y = Rq0 · x εq (q0 y − x) 0 (−εq0 )3 −εq0 y = Rq0 · εq0 (q0 y − x) εq0 (q0 y − x) 3 −εq0 −εq0 y = Rq0 Iq 1 · εq0 (q0 y − x) δq1 (−iq1 εq0 y − εq0 (q0 y − x)) 3 −εq0 −εq0 y = Rq0 Iq 1 · εq0 (q0 y − x) δq1 εq0 (−iq1 y − q0 y + x) 3 −εq0 y −εq0 · . = Rq0 Iq 1 εq0 (q0 y − x) δq1 εq0 (x − qy) δq1 εq0 (x − qy) Dabei ist Rq0 := Rq0 (x, y) und Iq1 := Iq1 (εq0 (q0 y − x), −εq0 y). Setzt man zur verkürzenden Schreibweise 3 −εq0 −εq0 , (B.5) Iq 1 σ̃ := σ̃(x, y, q) := Rq0 εq0 (q0 y − x) δq1 εq0 z und ist y = q ′ z + u, q ′ , u ∈ Z[i], so erhält man: y y y − q′z u = σ̃· = σ̃· = σ̃· . x δq1 εq0 z δq1 εq0 z δq1 εq0 z Lemma B.7 σ̃ : D̃ ⊂ Z[i]3 → Z[i]× induziert kanonisch eine wohldefinierte Abbildung σ ′ : D ⊂ (Z/8Z[i])3 → Z[i]× , wobei D̃, D die Definitionsbereiche von σ̃ bzw. σ ′ sind (mit der Einschränkung, daß der erste Operand primär und der zweite durch 1 + i teilbar ist). Beweis. Es ist zu zeigen, daß für x, y, q ∈ Z[i], x primär, y durch 1 + i teilbar, σ̃(x, y, q) = σ ′ (x mod 8, y mod 8, q mod 8) ist. Seien x′ , y ′, q ′ ∈ Z[i] mit x ≡ x′ mod 8, y ≡ y ′ mod 8, q ≡ q ′ mod 8, also ist x′ primär und y ′ durch 1+i teilbar. Dann ist zu zeigen, daß σ̃(x, y, q) = σ̃(x′ , y ′, q ′ ) ist. Mit der Definition von σ̃ in (B.5) erhält man aus Lemma B.6, daß Rq0 (x, y) = Rq0′ (x, y), Iq1 (x̂, ŷ) = Iq1′ (x̂, ŷ) (B.6) ist, wobei x̂ := εq0 (q0 y − x), ŷ := −εq0 y sind. Des weiteren berechnen sich Rq0′ (. . . ) und Iq1′ (. . . ) als Produkt quartischer Restsymbole (siehe Definition B.2), die nach Proposition 54 B Elementarer Beweis des Theorems 3.15 3.8 jeweils nur von den Z[i]/8Z[i]-Restklassen der Operanden abhängen (2. Ergänzungsgesetz wird dabei nicht benötigt). Damit erhält man mittels Gleichung (B.6) Rq0 (x, y) = Rq0′ (x′ , y ′), Iq1 (x̂, ŷ) = Iq1′ (x̂′ , ŷ ′), wobei x̂′ := εq0′ (q0′ y ′ − x′ ), ŷ ′ := −εq0′ y ′ sind. Da in der Berechnung von σ ′ neben Rq0 (. . . ) und Iq1 (. . . ) nur noch zwei Restsymbole vorkommen (siehe (B.5)), die lediglich von den Z[i]/8Z[i]-Restklassen der Operanden abhängen, ist σ′ selbst nur von den Z[i]/8Z[i]Restklassen der Operanden abhängig. Bemerkung. Seien x, y, q ∈ Z[i], x0 , x1 , y0 , y1 , q0 , q1 ∈ {0, . . . , 7}. Des weiteren sei x primär und y durch 1 + i teilbar. Es gibt 23 = 8 solche x und 25 = 32 solche y. Insgesamt ist also σ ′ auf einer endlichen Menge der Kardinalität 23+5+6 = 214 = 16384 definiert, da σ ′ nur für primären ersten Operanden und durch 1 + i teilbaren zweiten Operanden definiert ist. Nun haben wir alle Vorbereitungen getroffen, um eine neue Version des quartischen Reziprozitätsgesetzes formulieren zu können, die mit den berechneten Euklidschritten xj−1 = qj xj + xj+1 korrespondiert: Theorem B.8 Seien xj−1 , xj ∈ Z[i] gegeben, xj−1 primär. Dann gilt: i h xj+1 (−1) Im(xj−14) Im(xj ) wenn x primär, j xj xj = hx i j+2 σ ′ (x , x , q ) xj−1 wenn (1 + i) | xj . j−1 j j xj+1 Bemerkung. Die Fälle, daß xj bzw. xj−1 , (1 + i) ∤ xj−1 , nicht primär sind, lassen sich direkt aus dem Theorem B.8 mit Hilfe des Theorems 3.7 herleiten: Proposition B.9 Seien xj−1 , xj ∈ Z[i] gegeben, xj−1 nicht durch 1 + i teilbar. Des weiteren sei, sofern 1 + i nicht xκ teilt, γκ ∈ Z[i]× so gewählt, daß γκ xκ primär ist. Dann gilt: h i h i3 h i Im(γj−1 xj−1 ) Im(γj xj ) xj+1 γj γj−1 4 · wenn (1 + i) ∤ xj , xj xj γj−1xj−1 γj xj (−1) = h i xj−1 xj+2 ·σ ′ (γj−1 xj−1 , xj , γj−1qj ) wenn (1 + i) | xj . xj+1 Beweis. Sei xj−1 = qj xj + xj+1 . (i) Es gelte nun (1 + i) ∤ xj . γj3 xj γj xj xj = = · xj−1 γj−1xj−1 γj−1xj−1 γj−1xj−1 3 Im(γj−1 xj−1 ) Im(γj xj ) γj γj−1xj−1 4 = (−1) · γj−1xj−1 γj xj 3 Im(γj−1 xj−1 ) Im(γj xj ) γj xj−1 γj−1 4 (−1) · = γj−1xj−1 γj xj xj 3 Im(γj−1 xj−1 ) Im(γj xj ) γj γj−1 xj+1 4 = (−1) · . γj−1xj−1 γj xj xj 55 (ii) Nun gelte (1 + i) | xj . Des weiteren ist γj−1xj−1 = (γj−1qj )xj + (γj−1xj+1 ) sowie xj = qj+1 xj+1 + xj+2 . xj xj xj ′ = = σ (γj−1xj−1 , xj , γj−1qj )· xj−1 γj−1 xj−1 γj+1 xj+1 xj+2 . = σ ′ (γj−1xj−1 , xj , γj−1qj )· xj+1 Definition B.3 Die Bezeichnungen seien wie in Proposition B.9. Dann können wir aufgrund der Vorüberlegungen nun σ, τ definieren. (Diese Definition von σ, τ stimmt mit der Definition 3.6 überein.) σ(xj−1 , xj , qj ) := σ ′ (γj−1xj−1 , xj , γj−1qj ), wenn (1 + i) | xj ; Im(γj−1 xj−1 ) Im(γj xj ) γj3 γj−1 4 (−1) , wenn (1 + i) ∤ xj ; τ (xj−1 , xj ) := γj−1xj−1 γj xj Bemerkung. σ, τ hängen lediglich von den Restklassen der Real- und Imaginärteile von xj−1 , xj und ggf. qj in Z[i]/8Z[i] ab. Bezeichne D := {z ∈ Z[i]/8Z[i] : z0 ≡ z1 mod 2} die Elemente, die durch 1 + i teilbar sind. Dann gilt: σ : (Z[i]/8Z[i] \ D) × D × Z[i]/8Z[i] → Z[i]× , τ : (Z[i]/8Z[i] \ D)2 → Z[i]× . Korollar B.10 Seien xj−1 , xj ∈ Z[i] wie in Proposition B.9. Dann gilt: i h xj+1 ·τ (x , x ) wenn (1 + i) ∤ xj , j−1 j xj xj = hx i j+2 ·σ(x , x , q ) wenn (1 + i) | x . xj−1 j−1 j j j xj+1 Die Aussage dieses Korollars ist dieselbe wie die des Theorems 3.15. Damit haben wir also auf elementarem Wege die Behauptung des Theorems 3.15 erneut bewiesen. 56 B Elementarer Beweis des Theorems 3.15 Literaturverzeichnis [CC76] B. F. Caviness and G. E. Collins, Algorithms for Gaussian Integer Arithmetic, Proceedings of the ACM Symposium on Symbolic and Algebraic Computation, Yorktown Heights (1976), 36–45. [Coh96] H. Cohen, A Course in Computational Algebraic Number Theory, Graduate Texts in Mathematics, vol. 138, Springer-Verlag, Berlin, Heidelberg, London etc., 1996. [Gau89] C. F. Gauß, Untersuchungen über höhere Arithmetik (Disquisitiones Arithmeticae), Chelsea Publishing Company, Bronx, New York, 1889, Neudruck 1965, Übersetzung ins Deutsche von H. Maser (ed.). [Hec23] E. Hecke, Vorlesung über die Theorie der algebraischen Zahlen, Akadem. Verlagsges., Leipzig, 1923. [IR90] K. Ireland and M. Rosen, A Classical Introduction to Modern Number Theory, second ed., Graduate Texts in Mathematics, vol. 84, Springer-Verlag, Berlin, Heidelberg, London etc., 1990. [Knu98] D. E. Knuth, Seminumerical Algorithms, third ed., The Art of Computer Programming, vol. 2, Addison-Wesley, Reading, MA, USA, 1998. [Lem99] F. Lemmermeyer, Reciprocity Laws. Their Evolution from Euler to Artin, unpublished manuscript, http://www.rzuser.uni-heidelberg.de/˜hb3/rec.html, 1999. [Leu96] A. Leutbecher, Zahlentheorie. Eine Einführung in die Algebra, Springer-Verlag, Berlin, Heidelberg, New York, 1996. [MS98] S. M. Meyer and J. P. Sorenson, Efficient Algorithms for Computing the Jacobi Symbol, J. Symbolic Comput. 26 (1998), no. 4, 509–523. [Neu92] J. Neukirch, Algebraische Zahlentheorie, Springer-Verlag, Berlin, Heidelberg, New York, 1992. [Sch71] A. Schönhage, Schnelle Berechnung von Kettenbruchentwicklungen, Acta Informatica 1 (1971), 139–144. [Sch87] A. Schönhage, IGCDOC, Computation of integer gcd’s, unpublished manuscript, 1987. 57 58 [Sch91] LITERATURVERZEICHNIS A. Schönhage, Fast Reduction and Composition of Binary Quadratic Forms, Proc. Int’l. Symp. on Symbolic and Algebraic Computation: ISSAC ’91 (S. M. Watt, ed.), ACM Press, 1991, pp. 128–133. [SGV94] A. Schönhage, A. F. W. Grotefeld, and E. Vetter, Fast Algorithms – A Multitape Turing Machine Implementation, BI Wissenschaftsverlag, Mannheim, 1994. [SS71] A. Schönhage and V. Strassen, Schnelle Multiplikation großer Zahlen, Computing 7 (1971), 281–292. [Wei99] A. Weilert, Asymptotisch schnelle g.g.T.-Berechnung im Ring der Gaußschen Zahlen, Diplomarbeit, Institut für Informatik, Universität Bonn, 1999.