Computeralgebra PARI

Ähnliche Dokumente
Einführung in die Zahlentheorie

11. Übung zur Vorlesung. Zahlentheorie. im Wintersemester 2015/16

11. Übung zur Vorlesung Zahlentheorie. im Wintersemester 2016/17. Untersuche mit dem Lucas-Lehmer-Test, ob die Zahl n = prim ist.

Übungsaufgaben zur Zahlentheorie (Holtkamp)

Übung ln(p) x aus dem Primzahlsatz π(x) x/ ln(x) folgt. Gehen Sie dabei wie folgt vor: i) p x

WIEDERHOLUNG (BIS ZU BLATT 7)

Ältere Aufgaben (bis 1998)

Zahlentheorie. Prof. Dr. H. Brenner Osnabrück SS Vorlesung 11 Satz (von Euklid) Es gibt unendlich viele Primzahlen.

ggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe.

Übungen zu Zahlentheorie, SS 2017

Euklidische Division. Zahlentheorie - V Zusammenfassung 225 / 231

Zahlentheorie. Vorlesung 11. Die Unendlichkeit der Primzahlen. N = p 1 p 2 p 3 p r +1.

Primzahlen Primzahlsatz Der Satz von Green und Tao Verschlüsselung mit RSA. Primzahlen. Ulrich Görtz. 3. Mai 2011

Liften von Lösungen modulo 2

In diesem Kapitel bestimmen wir die multiplikative Struktur der Einheitengruppe (Z/Z) von Z/Z für eine beliebige positive Zahl Z >0.

Kapitel III Ringe und Körper

Kapitel 3: Die Sätze von Euler, Fermat und Wilson. 8 Der Satz von Euler

Übungen zu Zahlentheorie für TM, SS 2013

Die Faszination der Primzahlen

Zahlen. Vorlesung Mathematische Strukturen. Sommersemester Zahlen. Zahlen

. Zahlentheorie, Arithmetik und Algebra I. Tobias Polzer. Tobias Polzer Zahlentheorie, Arithmetik und Algebra I.. /

3. Diskrete Mathematik

Liften von Lösungen modulo 2

Lösungen der Aufgaben

χ a : N + {0, 1, 1} {( a χ a (n) = χ a (n ). ψ(mn) < ψ(m)ψ(n).

Einführung in die Zahlentheorie

1 Zahlentheorie. 1.1 Kongruenzen

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik

Anhang I zur Vorlesung Kryptologie: Elementare Zahlentheorie

3: Primzahlen. 111 S. Lucks Diskr Strukt. (WS 18/19) 3: Primzahlen

Algorithmische Kryptographie

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik

Primzahltest für Mersenne-Primzahlen

Übungen zu Zahlentheorie, SS 2008

Primzahlen von Euklid bis heute

Diskrete Mathematik Kongruenzen

Bitte tragen Sie zuerst in Druckschrift Ihren Namen und Ihre Matrikelnummer ein.

Lösungen - Serie 2 zu den Übungsaufgaben zur Vorlesung Algebraische Zahlentheorie

Musterlösung zur Probeklausur zur Angewandten Diskreten Mathematik Dr. Hartmut Lanzinger, Hans- Peter Reck

Definition der Kolmogorov-Komplexität I

Algebra für Informationssystemtechniker

L-Funktionen in Geometrie und Arithmetik

Von den ganzen Zahlen zu GF(p)

ZAHLENTHEORIE. Skriptum zur Vorlesung von Prof. Michael DRMOTA

ADS: Algorithmen und Datenstrukturen 2

VI.3 RSA. - RSA benannt nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman. - vorgestellt erstes Public-Key Verschlüsselungsverfahren

3: Zahlentheorie / Primzahlen

Zahlentheorie I. Christoph Egger. 18. Juni Christoph Egger Zahlentheorie I 18. Juni / 32

Fibonacci-Zahlen und goldener Schnitt

384 = = = =

Groÿe Fortschritte bei kleinen Primzahllücken

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 4: Zahlentheorie

Endliche Körper und Codierung SS Übungsblatt. 9. Bestimmen Sie alle primitiven Elemente (Erzeuger der multiplikativen Gruppe) von

Zahlentheorie, Arithmetik und Algebra II

Erweiterter Euklidischer Algorithmus

Zahlentheorie, Arithmetik und Algebra

Struktur und Zufall in der Menge der Primzahlen

Mathematische Methoden für Informatiker

Quadratische Reste. Michael Partheil. 19. Mai Hintergrund 2. 2 Quadratische Reste 4. 3 Gauß sche Summen 7

Übungen zur Zahlentheorie

Zahlentheorie, Arithmetik und Algebra I

Seminarvortrag aus Reiner Mathematik Existenz von Primitivwurzeln

Kapitel 6: Das quadratische Reziprozitätsgesetz

Polynome und endliche Körper

Prüfungsfragen zur Vorlesung Algebra und Diskrete Mathematik. Sommersemester 2018

UE Zahlentheorie. Markus Fulmek

Stroppel Musterlösung , 180min. Aufgabe 1 (4 Punkte) Bestimmen Sie die folgenden Grenzwerte und Funktionengrenzwerte.

Numerische Verfahren und Grundlagen der Analysis

Übung zur Vorlesung Diskrete Strukturen I

Zahlentheorie, Arithmetik und Algebra 1

ÜBUNGEN ZUR VORLESUNG ZAHLENTHEORIE, SS 2018

7. Kongruenzrechnung Definition: Proposition: Korollar: Beispiel: b ( a kongruent b modulo n ) auf Z, definiert durch:

Einführung in Algebra und Zahlentheorie Lösungsvorschläge zur Klausur vom Aufgabe 1 (6 Punkte)

9. Primitivwurzeln. O. Forster: Einführung in die Zahlentheorie

Analytische ZAHLENTHEORIE. Skriptum zur Vorlesung von Prof. Michael DRMOTA

8. Musterlösung zu Mathematik für Informatiker II, SS 2004

ELEMENTARE ZAHLENTHEORIE FÜR LAK Kapitel 2: Kongruenzen und Restklassen

Lineare Algebra I (WS 13/14)

2.7. RINGDIREKTE SUMME, SIMULTANE KONGRUENZEN 89

Der chinesische Restsatz mit Anwendung

Lösung zur 13. Hausübung Algebraische Strukturen (keine Abgabe)

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)

Viel Erfolg! Universität Kassel Lösungen zur Klausur WS 2010/11 Diskrete Strukturen II (Informatik) Name:... Matr.-Nr.:...

Seminarvortrag aus Reiner Mathematik Zweierpotenzen als Moduln und Satz von Wilson

WS 2009/10. Diskrete Strukturen

Anzahl der Generatoren

Einführung in die Zahlentheorie

Aufgabe der Kryptografie

SAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen. Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014

Beispiel bestimme x Z mit. es gilt also. gilt dann. für x = 1 i k c i (M/m i ) v i gilt. y c i mod m i (1 i k), nämlich y = x mod M

Übungen p-adische Zahlen

Klausur zur Elementaren Algebra und Zahlentheorie Mittwoch,

Körper- und Galoistheorie

Elementare Zahlentheorie (Version 2)

Public-Key-Verschlüsselung und Diskrete Logarithmen

Tutorium: Diskrete Mathematik

= 1. Falls ( a n. ) r i. i=1 ( b p i

Kanonische Primfaktorzerlegung

Transkript:

Universität Wien Prof. Dr. D. Burde Computeralgebra PARI 1. Eine kleine Einführung in PARI-GP. PARI-GP ist ein Computeralgebrasystem (CAS), das hauptsächlich für Berechnungen in der Zahlentheorie entworfen wurde. Wir starten das Programm mit dem Befehl gp. Dann erscheint die folgende Meldung: PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER. Type? for help, \q to quit. Type?12 for how to get moral (and possibly technical) support. realprecision = 28 significant digits seriesprecision = 16 significant terms format = g0.28 parisize = 4000000, primelimit = 500000 Wir wollen jetzt ein paar einfache Befehle ausprobieren:? 13*51 %1 = 663? gcd(360,336) %2 = 24? print("gcd(360,336) = ",gcd(360,336)) gcd(360,336) = 24? 2^(2^8+1) %4 = 23158417847463239084714197001737581570653996933128112807891516801582 6259279872? primes(100) %6 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331,337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]? \q Good bye!

primes(n) gibt die ersten n Primzahlen aus. PARI hat standardmäßig schon die ersten 500000 Primzahlen vorberechnet. Der Neustart-Befehl gp -p 1000000 startet PARI mit 1000000 vorberechneten Primzahlen. Die Funktion prime(n) gibt die n-te Primzahl aus. Mit factor(n) kann man eine ganze Zahl n faktorisieren:? prime(100) %1 = 541? factor(160688361) %2 = [3 1] [181 1] [541 1] [547 1] Es gibt auch einen Befehl, mit dem man entscheiden kann, ob eine ganze Zahl n prim ist: isprime(n)? isprime(2958270619) %1 = 0? factor(2958270619) %2 = [1117 2] [2371 1]? isprime(650051333) %3 = 1 Hier sind noch weitere Befehle. Mit deriv(f) kann man die Ableitung von f bestimmen.? binomial(120,71) %1 = 12930805958841513897337547991361800? deriv(1/x) %2 = -1/x^2? sin(x) %3 = x - 1/6*x^3 + 1/120*x^5-1/5040*x^7 + 1/362880*x^9-1/39916800*x^11 + 1/6227020800*x^13-1/1307674368000*x^15 + O(x^16)? \p 1000 realprecision = 1001 significant digits (1000 digits displayed)? Pi %4 = 3.14159265358979323846264338327950288419716939937510582097494459230781640 628620899862803482534211706798214808651328230664709384460955058223172535940812 848111745028410270193852110555964462294895493038196442881097566593344612847564 823378678316527120190914564856692346034861045432664821339360726024914127372458 700660631558817488152092096282925409171536436789259036001133053054882046652138 414695194151160943305727036575959195309218611738193261179310511854807446237996 274956735188575272489122793818301194912983367336244065664308602139494639522473 719070217986094370277053921717629317675238467481846766940513200056812714526356 082778577134275778960917363717872146844090122495343014654958537105079227968925 892354201995611212902196086403441815981362977477130996051870721134999999837297 804995105973173281609631859502445945534690830264252230825334468503526193118817 101000313783875288658753320838142061717766914730359825349042875546873115956286

3882353787593751957781857780532171226806613001927876611195909216420199 Mit PARI kann man wie folgt Summen berechnen. Wir wollen die Reihe der reziproken Primzahlwerte bis p n ausrechen, d.h., 1 p? sum(n=1,100,isprime(n)*1.0/n) %1 = 1.802817201048870939871615825? sum(n=1,1000,isprime(n)*1.0/n) %2 = 2.198080127175087541588476785? sum(n=1,10000,isprime(n)*1.0/n) %3 = 2.483059947233560636099611306 p n Die Reihe divergiert bekanntermaßen für n, aber sehr langsam. Man teste dagegen die folgende Reihe, wobei F k die k-te Fibonacci-Zahl ist: 1 = 1 + 1 + 1 F k 2 + 1 3 + 1 5 + 1 8 + + k=1? sum(n=1,100,1.0/fibonacci(n)) %8 = 3.359885666243177553167443484? sum(n=1,1000,1.0/fibonacci(n)) %9 = 3.359885666243177553172011299? sum(n=1,10000,1.0/fibonacci(n)) %10 = 3.359885666243177553172011299 Wir vermuten, daß die Reihe gegen eine Konstante, die mit 3.35988566 beginnt, konvergiert. In der Tat, die Reihe konvergiert gegen die Prévost Konstante: 3.3598856662431775531720113029189271796889051337319684864955538153251303 1899668338361541621645679008729704534292885391330413678901710088367959 1351733077119078580333550332507753187599850487179777897006039564509215 3758927752656733540240331694417992939346109926262579646476518686594497 1021655898436088147269324959107947387367337852332687749976272775794685 3676918541981467668742998767382096913901217722024405208151094264934951 3745416672789553444707777758478025963407690748474155579104200675015203 4107053352851297926352420622675375680557619556697208488438544079833242 9285136807082752266257975118864646409673746157238723629556205361220302... Prévost hatte 1977 bewiesen, daß diese Konstante irrational ist. Vorher hatte Apéry bewiesen, daß ζ(3) irrational ist: 1 ζ(s) = n s, Re(s) > 1 n=1? \p 100 realprecision = 105 significant digits (100 digits displayed)? zeta(3) %2 = 1.202056903159594285399738161511449990764986292340498881792271555

341838205786313090186455873609335258 Kommen wir nochmal zum ggt zweier ganzer Zahlen a, b zurück, der mit gcd(a,b) berechnet wird. (lcm(a,b) berechnet das kgv von a und b). Mit bezout(a,b) kann PARI sogar die lineare diophantische Gleichung ax + by = (a, b) lösen. Wir machen ein Beispiel und rechnen gleich die Probe dazu. PARI benutzt den Euklidischen Algorithmus dazu, und gibt nur eine Lösung aus, auch wenn es mehrere gibt.? gcd(2479,1739) %4 = 37? bezout(2479,1739) %5 = [-7, 10, 37]? -7*2479+10*1739 %6 = 37 Der Befehl funktioniert nicht nur in Z, sondern auch in Z[x]:? gcd(x^2-1,x^2+x+3) %7 = 1? gcd(x^4+x^3-x-1,2*x^3+5*x^2+5*x+3) %8 = x^2 + x + 1? bezout(x^4+x^3-x-1,2*x^3+5*x^2+5*x+3) %9 = [4/5, -2/5*x + 3/5, x^2 + x + 1] Das gilt auch für den Befehl factor:? factor(x^5-1) %10 = [x - 1 1] [x^4 + x^3 + x^2 + x + 1 1] Die Teiler einer ganzen Zahl n findet man wie folgt:? divisors(111111) %15 = [1, 3, 7, 11, 13, 21, 33, 37, 39, 77, 91, 111, 143, 231, 259, 273, 407, 429, 481, 777, 1001, 1221, 1443, 2849, 3003, 3367, 5291, 8547, 10101, 15873, 37037, 111111]? numdiv(111111) %16 = 32? factor(111111) %17 = [3 1] [7 1] [11 1] [13 1] [37 1] Auch Vektoren und Matrizen sind in PARI vorgesehen. Wir berechnen die Inverse von ( ) 1 2 : 3 4

? [1,2,3]+[4,5,6] %1 = [5, 7, 9]? [1,2;3,4]^(-1) %2 = [-2 1] [3/2-1/2] Was ist 2 100 mod 81?? Mod(2,81)^100 %3 = Mod(25, 81) Man kann Polynome auch modulo p faktorisieren:? factor(x^2-5) %4 = [x^2-5 1]? factor(mod(1,11)*(x^2-5)) %5 = [Mod(1, 11)*x + Mod(4, 11) 1] [Mod(1, 11)*x + Mod(7, 11) 1] Mit dem Befehl polisirreducible kann man testen, ob ein Polynom irreduzibel über Q[x] bzw. F p [x] ist. Es wird 1 oder 0 ausgegeben. 1 meint irreduzibel.? polisirreducible(x^2-5) %6 = 1? polisirreducible(mod(1,11)*(x^2-5)) %7 = 0 Die prime Restklassengruppe (Z/nZ) hat ja bekanntlich ϕ(n) Elemente. Die Funktion ϕ(n) heißt die Eulersche ϕ-funktion. Falls die Gruppe (Z/nZ) zyklisch ist, so heißt ein Erzeuger eine Primitivwurzel modulo n. Gauß hat bewiesen, daß es genau dann Primitivwurzeln modulo n gibt, wenn n = 2, 4, p l, 2p l gilt für eine Primzahl p > 2 und ein l N.? eulerphi(43) %8 = 42? znprimroot(43) %9 = Mod(3, 43)? eulerphi(4489) %10 = 4422? znprimroot(4489) %11 = Mod(2, 4489)? znstar(4489) %12 = [4422, [4422], [Mod(2, 4489)]] Hierbei gibt znprimroot(n) die kleinste Primitivwurzel modulo n aus, sofern es überhaupt Primitivwurzeln modulo n gibt. Mit znstar(n) wird die Struktur von (Z/nZ) nochmal zusammengefaßt. Der Befehl chinese(mod(a,m),mod(b,n)) findet eine Lösung zu den Kongruenzen x a mod m, x b mod n

falls es eine gibt:? chinese(mod(3,8),mod(12,45)) %1 = Mod(147, 360) 2. Übungen: Der Primzahlsatz. Schreiben Sie ein PARI Programm pnt.gp, das die folgende Funktion berechnet: π(x) = p x 1 Die Summe geht über alle Primzahlen p x. Der Primzahlsatz, der 1896 unabhängig von Hadamard und de la Vallée Poussin bewiesen wurde, besagt π(x) x log x für x Berechnen Sie die Zahlen π(1000), π(2000),..., π(10000) und vergleichen Sie die Werte mit der Näherung x/(log x 1). 3. Der Dirichletsche Primzahlsatz. Seien a und q zwei teilerfremde ganze Zahlen. Schreiben Sie ein PARI Programm dirichlet.gp, das die folgende Funktion berechnet: f(n) = f(n, a, q) = p n p a(q) Der Wert f(n) ist gleich der Anzahl der Primzahlen p n, die in der arithmetischen Folge qx+a vorkommen. Der Satz von Dirichlet besagt, daß lim n f(n) = gilt. Genauer gilt: 1 f(x, q, a) π(x) ϕ(q) x ϕ(q) log x, für x Berechnen Sie für a = 7 und q = 16 die Zahlen f(1000), f(2000),..., f(10000). 4. Faktorisierung mit PARI. Faktorisieren Sie mit PARI die Zahl 2 227 1 = 215679573337205118357336120696157045389097155380324579848828881993727 Je nach Rechnergeschwindigkeit sollten Sie schon einige Minuten auf die Antwort warten. Berechnen Sie die Faktoriserung mit anderen CAS und vergleichen Sie die Zeit. Sollten Sie zu lange warten, dann brechen Sie besser ab, und versuchen Sie es mit 2 211 1 oder 2 p 1 für kleinere Primzahlen p. Lösung: Es gilt 2 227 1 = 26986333437777017 7992177738205979626491506950867720953545660121688631

5. PARI Online. Die Homepage von PARI ist zu finden unter http://pari.math.u-bordeaux.fr William Stein hat einen Online PARI Calculator eingerichtet. Er findet sich unter http://modular.fas.harvard.edu/calc