<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lucas-Lehmer-Test</id>
	<title>Lucas-Lehmer-Test - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lucas-Lehmer-Test"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lucas-Lehmer-Test&amp;action=history"/>
	<updated>2026-06-21T02:10:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Lucas-Lehmer-Test&amp;diff=2092841&amp;oldid=prev</id>
		<title>imported&gt;RolandIllig: /* Beispielimplementierung in Python */ idiomatisches Python 3; insbesondere die Leerzeichen rund um die Operatoren waren irreführend</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lucas-Lehmer-Test&amp;diff=2092841&amp;oldid=prev"/>
		<updated>2023-12-20T23:25:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispielimplementierung in Python: &lt;/span&gt; idiomatisches Python 3; insbesondere die Leerzeichen rund um die Operatoren waren irreführend&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Datei:LucasTheorieDesFonctions1878.png|miniatur|500px|Ausschnitt von Seite 316 der Arbeit &amp;#039;&amp;#039;Théorie des Fonctions Numériques Simplement Périodiques&amp;#039;&amp;#039; von [[Édouard Lucas]] (1878)]]&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Lucas-Lehmer-Test&amp;#039;&amp;#039;&amp;#039; ist ein [[Primzahltest]] für [[Mersenne-Zahl]]en, das heißt für Zahlen der Form &amp;lt;math&amp;gt;M_n = 2^n - 1&amp;lt;/math&amp;gt;. Der Test wird im [[Great Internet Mersenne Prime Search|GIMPS-Projekt]] (engl.: &amp;#039;&amp;#039;Great Internet Mersenne Prime Search&amp;#039;&amp;#039;) –&amp;amp;nbsp;der Suche nach bisher nicht bekannten Mersenne-Primzahlen&amp;amp;nbsp;– angewandt.&lt;br /&gt;
&lt;br /&gt;
Dieser Test beruht auf Eigenschaften der [[Lucas-Folge]]n und nicht wie der [[Lucas-Test (Mathematik)|Lucas-Test]] auf dem [[Kleiner Fermatscher Satz|kleinen Fermatschen Satz]].&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Der Lucas-Lehmer-Test funktioniert wie folgt:&lt;br /&gt;
: Sei &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; ungerade und prim. Die Folge &amp;lt;math&amp;gt;S(k)&amp;lt;/math&amp;gt; sei definiert durch &amp;lt;math&amp;gt;S(1)=4, S(k+1)=S(k)^2-2&amp;lt;/math&amp;gt;.&lt;br /&gt;
: Dann gilt:  &amp;lt;math&amp;gt;M_p=2^p-1&amp;lt;/math&amp;gt; ist genau dann eine Primzahl, wenn &amp;lt;math&amp;gt;S(p-1)&amp;lt;/math&amp;gt; durch &amp;lt;math&amp;gt;M_p&amp;lt;/math&amp;gt; teilbar ist.&amp;lt;ref&amp;gt;Zum Beweis siehe Ribenboim: &amp;#039;&amp;#039;Die Welt der Primzahlen&amp;#039;&amp;#039;, S. 78/79.&amp;lt;/ref&amp;gt;&lt;br /&gt;
Dieser Satz wurde 1930 von [[Derrick Henry Lehmer]] gefunden und geht auf [[Édouard Lucas]] zurück (siehe Abbildung).&lt;br /&gt;
Mit Hilfe der [[Modulo]]-Funktion mod lässt sich der Satz so formulieren:&lt;br /&gt;
: Seien &amp;lt;math&amp;gt;S(1)=4&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;S(k+1)\equiv S(k)^2-2\ mod\ M_p&amp;lt;/math&amp;gt;. Dann gilt: &amp;lt;math&amp;gt;M_p&amp;lt;/math&amp;gt; ist genau dann eine Primzahl, wenn &amp;lt;math&amp;gt;S(p-1)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die Modulo-Funktion bzgl. einer Mersenne-Zahl lässt sich im [[Dualsystem]] (Binärsystem) besonders einfach berechnen, da die Mersenne-Zahl darin nur aus lauter Einsen bestehen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
Beispiel 1: Wir prüfen mit diesem Verfahren, ob &amp;lt;math&amp;gt;M_5=2^5-1=31&amp;lt;/math&amp;gt; eine Primzahl ist:&lt;br /&gt;
  S(1) = 4&lt;br /&gt;
  S(2) = ( 4² - 2) mod 31 =  14 mod 31 = 14&lt;br /&gt;
  S(3) = (14² - 2) mod 31 = 194 mod 31 = 8&lt;br /&gt;
  S(4) = ( 8² - 2) mod 31 =  62 mod 31 = 0&lt;br /&gt;
Da &amp;lt;math&amp;gt;S(4)=0&amp;lt;/math&amp;gt; ist, ist &amp;lt;math&amp;gt;M_5=31&amp;lt;/math&amp;gt; eine Primzahl.&lt;br /&gt;
&lt;br /&gt;
Beispiel 2: Wir prüfen, ob &amp;lt;math&amp;gt;M_{11}=2^{11}-1=2047&amp;lt;/math&amp;gt; eine Primzahl ist:&lt;br /&gt;
  S( 1) = 4&lt;br /&gt;
  S( 2) = (   4² - 2) mod 2047 =      14 mod 2047 = 14&lt;br /&gt;
  S( 3) = (  14² - 2) mod 2047 =     194 mod 2047 = 194&lt;br /&gt;
  S( 4) = ( 194² - 2) mod 2047 =   37634 mod 2047 = 788&lt;br /&gt;
  S( 5) = ( 788² - 2) mod 2047 =  620942 mod 2047 = 701&lt;br /&gt;
  S( 6) = ( 701² - 2) mod 2047 =  491399 mod 2047 = 119&lt;br /&gt;
  S( 7) = ( 119² - 2) mod 2047 =   14159 mod 2047 = 1877&lt;br /&gt;
  S( 8) = (1877² - 2) mod 2047 = 3523127 mod 2047 = 240&lt;br /&gt;
  S( 9) = ( 240² - 2) mod 2047 =   57598 mod 2047 = 282&lt;br /&gt;
  S(10) = ( 282² - 2) mod 2047 =   79522 mod 2047 = 1736&lt;br /&gt;
Da &amp;lt;math&amp;gt;S(10)&amp;gt;0&amp;lt;/math&amp;gt; ist, ist &amp;lt;math&amp;gt;M_{11}=2047&amp;lt;/math&amp;gt; keine Primzahl (es gilt &amp;lt;math&amp;gt;2047 = 23\cdot 89&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Beispiel 3: Wir prüfen, ob &amp;lt;math&amp;gt;M_{19}=2^{19}-1 = 524287&amp;lt;/math&amp;gt; eine Primzahl ist:&lt;br /&gt;
  S( 1) = 4&lt;br /&gt;
  S( 2) = (      4² - 2) mod 524287 =     14&lt;br /&gt;
  S( 3) = (     14² - 2) mod 524287 =    194&lt;br /&gt;
  S( 4) = (    194² - 2) mod 524287 =  37634&lt;br /&gt;
  S( 5) = (  37634² - 2) mod 524287 = 218767&lt;br /&gt;
  S( 6) = ( 218767² - 2) mod 524287 = 510066&lt;br /&gt;
  S( 7) = ( 510066² - 2) mod 524287 = 386344&lt;br /&gt;
  S( 8) = ( 386344² - 2) mod 524287 = 323156&lt;br /&gt;
  S( 9) = ( 323156² - 2) mod 524287 = 218526&lt;br /&gt;
  S(10) = ( 218526² - 2) mod 524287 = 504140&lt;br /&gt;
  S(11) = ( 504140² - 2) mod 524287 = 103469&lt;br /&gt;
  S(12) = ( 103469² - 2) mod 524287 = 417706&lt;br /&gt;
  S(13) = ( 417706² - 2) mod 524287 = 307417&lt;br /&gt;
  S(14) = ( 307417² - 2) mod 524287 = 382989&lt;br /&gt;
  S(15) = ( 382989² - 2) mod 524287 = 275842&lt;br /&gt;
  S(16) = ( 275842² - 2) mod 524287 =  85226&lt;br /&gt;
  S(17) = (  85226² - 2) mod 524287 = 523263&lt;br /&gt;
  S(18) = ( 523263² - 2) mod 524287 =      0&lt;br /&gt;
Da &amp;lt;math&amp;gt;S_{18}=0&amp;lt;/math&amp;gt; ist, ist &amp;lt;math&amp;gt;M_{19} = 524287&amp;lt;/math&amp;gt; eine Primzahl (dies ist schon seit 1603 bekannt).&lt;br /&gt;
&lt;br /&gt;
== Beispielimplementierung in Python ==&lt;br /&gt;
Das folgende Programm implementiert den Lucas-Lehmer-Test in der Programmiersprache [[Python (Programmiersprache)|Python]]. In Python ist es möglich, mit beliebig großen ganzen Zahlen zu rechnen, die nur durch den verfügbaren Speicher begrenzt sind. Die hier vorgestellte Implementierung berücksichtigt nicht, dass der Lucas-Lehmer-Test idealerweise bereits abbricht, wenn &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; gerade oder nicht-prim ist, dies wird dem Nutzer überlassen. So würde das Programm bei Eingabe von &amp;lt;math&amp;gt;p = 2&amp;lt;/math&amp;gt; die falsche Aussage liefern, dass die Zahl 3 keine Mersenne-Primzahl ist.&lt;br /&gt;
[[Datei:MersennePrimeStamp.gif|miniatur|Briefstempel zur Entdeckung der Mersenne-Primzahl 2&amp;lt;sup&amp;gt;11213&amp;lt;/sup&amp;gt;-1]]&lt;br /&gt;
Auf einem [[Intel Pentium 4]] aus dem Jahr 2005 benötigt die Rechnung für &amp;lt;math&amp;gt;p = 11213&amp;lt;/math&amp;gt; mit diesem Programm nur 41 Sekunden. Die Rechnung im Jahr 1963, mit der nachgewiesen wurde, dass &amp;lt;math&amp;gt;M_{11213}&amp;lt;/math&amp;gt; prim ist, dauerte dagegen mit einem damaligen [[Supercomputer]] Illiac&amp;amp;nbsp;II&amp;lt;ref&amp;gt;&amp;#039;&amp;#039;[[:en:ILLIAC II|ILLIAC II]]&amp;#039;&amp;#039; in der englischsprachigen Wikipedia&amp;lt;/ref&amp;gt; noch 2¼ Stunden.&amp;lt;ref&amp;gt;Donald B. Gillies: [http://www.jstor.org/pss/2003409 &amp;#039;&amp;#039;Three new Mersenne primes and a statistical theory&amp;#039;&amp;#039;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def ist_prim(p):&lt;br /&gt;
    m = 2 ** p - 1&lt;br /&gt;
    s = 4&lt;br /&gt;
    for i in range (2, p):&lt;br /&gt;
        s = (s * s - 2) % m&lt;br /&gt;
    return s == 0&lt;br /&gt;
&lt;br /&gt;
p = int(input(&amp;#039;Exponent p von 2^p-1 &amp;#039;))&lt;br /&gt;
eine_oder_keine = &amp;#039;eine&amp;#039; if ist_prim(p) else &amp;#039;keine&amp;#039;&lt;br /&gt;
print(f&amp;#039;2^{p} - 1 ist {eine_oder_keine} Mersenne-Primzahl&amp;#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* [[Paulo Ribenboim]]: &amp;#039;&amp;#039;Die Welt der Primzahlen. Geheimnisse und Rekorde.&amp;#039;&amp;#039; Springer Verlag, Berlin u.&amp;amp;nbsp;a. 2006, ISBN 3-540-34283-4 (&amp;#039;&amp;#039;Springer-Lehrbuch&amp;#039;&amp;#039;).&lt;br /&gt;
* [[Édouard Lucas]]: &amp;#039;&amp;#039;Théorie des Fonctions Numériques Simplement Périodiques.&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;American Journal of Mathematics.&amp;#039;&amp;#039; 1, No. 4, 1878, S. 289–321, {{ISSN|0002-9327}} (dritter Teil der Abhandlung).&lt;br /&gt;
* [[Derrick Henry Lehmer]]: &amp;#039;&amp;#039;An extended theory of Lucas’ functions.&amp;#039;&amp;#039; In: &amp;#039;&amp;#039;The Annals of Mathematics.&amp;#039;&amp;#039; 31, No. 3, 1930, S. 419–448, {{ISSN|0003-486X}}.&amp;lt;br /&amp;gt; ([http://bancroft.berkeley.edu/Exhibits/Math/dhla.html erste Seite seiner Doktorarbeit von 1930 in einer Ausstellung in Berkeley sowie weitere Photos]).&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Primzahl]]&lt;/div&gt;</summary>
		<author><name>imported&gt;RolandIllig</name></author>
	</entry>
</feed>