MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Primzahlen in MuPAD

Kategorie.: Handwerkskasten

Mathematik: Zahlentheorie, Kryptographie

MuPAD.....: 3.0.0

Datum.....: 2002-08-14

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: isprime, nextprime, ithprime, ifactor, factor

________________________________________________________________________________

 

Elementare MuPAD-Funktionen:

Primzahlen in MuPAD

 

Primzahlen sind seit jeher ein interessanter Bereich der Zahlentheorie. Hier lernen wir, wie wir mit

MuPAD Zahlen auf Primheit testen können, wie wir die i-te Primzahl bestimmen können (i eine

positive ganze Zahl) und auch wie wir die nächst größere Primzahl zu einer gegebenen Zahl mit

MuPAD erhalten. In diesem Zusammenhang werden wir auch die Funktion 'ifactor' zur Faktorisierung

kennenlernen.

 

Um zu testen, ob eine Zahl eine Primzahl ist, stellt MuPAD die Funktion isprime

zur Verfügung.

 

Die Funktion isprime erhält stets ein Argument:

 

1. Argument: Eine positive ganze Zahl a

 

d.h. also ein Aufruf ist immer von der Form isprime( a ).

 

Als Rückgabewert liefert uns die Funktion isprime den Wert TRUE, falls a eine

Primzahl ist, und FALSE, falls a eine zusammengesetzte Zahl ist. 

 

Einige kleine Beispiele verdeutlichen wie immer den Umgang mit dieser neuen

Funktion:

 

isprime(11)

math

isprime(12)

math

isprime(167)

math

isprime(169)

math

isprime(2^(2^4) + 1)

math

isprime(2^(2^5) + 1)

math

 

Haben wir eine Zahl darauf getestet, ob es sich um eine Primzahl handelt, und

haben wir festgestellt, dass die betrachtete nicht prim ist (d.h. keine Primzahl ist),

so ist es unter Umständen von Interesse, die nächst größere Primzahl zu finden.

Dies ist immer dann interessant, wenn man eine Primzahl von einer bestimmten

Größenordnung sucht - dann ist das kanonische Vorgehen einfach eine Zahl der

entsprechenden Größenordnung zu wählen und die nächst größere Primzahl zu

bestimmen.

 

Die Funktion, die dies erledigt, ist die Funktion nextprime:

 

Die Funktion nextprime erhält stets ein Argument:

 

1. Argument: Eine positive ganze Zahl a

 

d.h. also ein Aufruf ist immer von der Form nextprime( a ).

 

Als Rückgabewert liefert uns die Funktion nextprime die kleinste Primzahl, die

größer oder gleich a ist. In dem Fall, dass a eine Primzahl ist, liefert die Funktion

also die Zahl a selbst zurück.

 

Auch zu dieser Funktion einige Beispiele:

 

nextprime(4)

math

nextprime(7)

math

nextprime(7+1)

math

nextprime(65537)

math

nextprime(7237832782188956092356216)

math

 

Wollen wir explizit die i-te Primzahl bestimmen (dabei denken wir uns natürlich

alle Primzahlen der Größe nach aufsteigend angeordnet), so können wir diese

mit Hilfe der Funktion ithprime finden:

 

Die Funktion ithprime erhält stets ein Argument:

 

1. Argument: Eine positive ganze Zahl i

 

d.h. also ein Aufruf ist immer von der Form ithprime( i ).

 

Als Rückgabewert liefert uns die Funktion ithprime die i-te Primzahl.

 

Wir bestimmen die 1000. Primzahl, die 5000. Primzahl und die

123456. Primzahl:

 

ithprime(1000)

math

ithprime(10000)

math

ithprime(123456)

math

 

Die erste Funktion, die wir in diesem Notebook kennengelernt haben, war

die Funktion isprime zum Test, ob eine Zahl eine Primzahl ist oder nicht.

 

Haben wir von einer Zahl festgestellt, dass es sich nicht um eine Primzahl

handelt, so muss die betrachtete Zahl zusammengesetzt sein, d.h. sie ist

in ein Produkt von Primzahlpotenzen zerlegbar. Man spricht davon, dass

sich die Zahl "faktorisieren" läßt.

 

Die Faktorisierung einer ganzen Zahl kann in MuPAD mittels der Funktion

ifactor berechnet werden. Leider sind Faktorisierungsalgorithmen nicht

annähernd so effizient, wie zum Beispiel einige der Algorithmen, die testen

ob eine gegebene Zahl eine Primzahl ist.

 

Daher: Bei der Berechnung der Faktorisierung großer Zahlen benötigt man

auch in MuPAD Geduld (auf dieser "Ineffizienz" von Faktorisierungsalgorithmen

beruht übrigens entscheidend die Sicherheit vieler Verfahren in der Krypto-

graphie - so z.B. auch die Sicherheit von RSA).

 

Die Funktion ifactor  erhält stets ein Argument:

 

1. Argument: Eine positive ganze Zahl a

 

d.h. also ein Aufruf ist immer von der Form ifactor ( a ).

 

Als Rückgabewert liefert uns die Funktion ifactor die Faktorisierung der Zahl

a, falls a zusammengesetzt (also kein Primzahl) ist, und a, falls a eine

Primzahl ist.  

 

Nun zu einigen Beispielen:

 

ifactor(64)

math

ifactor(124)

math

ifactor(15254727)

math

ifactor(74757235275979)

math

ifactor(33333333)

math

 

Anstelle von ifactor kann man auch die Funktion factor aufrufen. Dann muß

allerdings das System intern erst feststellen, dass es sich bei den Eingaben

um ganze Zahlen handelt (denn mit factor kann man z.B. auch Polynome

faktorisieren). Wenn man also wirklich effizient und schnell große ganze

Zahlen faktorisieren möchte, so sollte man die Funktion ifactor verwenden,

um nicht unnötig Rechenzeit für sogenannte interne Typ-Überprüfungen

zu verschwenden.

 

_______________________________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe

     wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die

     Bücher können unter www.schule.mupad.de/literatur kostenfrei kopiert werden. 

 

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.