From: Peter Schaefer Date: Sun, 10 Jun 2012 16:03:12 +0000 (+0200) Subject: UE5 Aufgabe 25-28 Sollte passen X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=62ae2096fa6642b396d21ccf6799bd12bb8748e7;p=zahlenTA.git UE5 Aufgabe 25-28 Sollte passen --- diff --git a/UE/lib.py b/UE/lib.py index 245f758..068f0f8 100644 --- a/UE/lib.py +++ b/UE/lib.py @@ -364,5 +364,3 @@ def sqmult_tex(x,k,func,e): print " ", x, "&" , y , "&" , k, "&" , k%2, "\\\\" print "\\end{array}" return y - - diff --git a/UE/ue5.pdf b/UE/ue5.pdf index 331ada5..dba635b 100644 Binary files a/UE/ue5.pdf and b/UE/ue5.pdf differ diff --git a/UE/ue5.tex b/UE/ue5.tex index ffa9081..ccfbf08 100644 --- a/UE/ue5.tex +++ b/UE/ue5.tex @@ -11,7 +11,8 @@ \aufgabe{25} {$p=2^{43112609}-1$ ist die zur Zeit größte bekannte Primzahl. Wie kann man ihre Stellenanzahl am einfachsten berechnen und was sind ihre $3$ Endziffern?} - +Die Anzahl der Stellen einer Zahl können mit $\log_{10}$ berechnet werden. Daher ist $\log_{10} 2^{43112609} = 43112609\cdot\log_{10} 2 \approx 12978188.5003$\\ +Für die letzten 3 Stellen berechnet man nun: \begin{align} 2^{43112609} \in (\Z_{1000}, * \mod 1000, 1) \text{, d.h. }x=2, k=43112609 \end{align} @@ -24,6 +25,29 @@ lib.sqmult_tex(2,43112609,lambda x,y:(x*y)%1000,1) \begin{align} p=2^{43112609} \mod 1000 &\equiv 512 \Rightarrow 2^{43112609}-1 \mod 1000 \equiv 511 \end{align} +\newpage\noindent +Oder aber man Überlegt sich vorher eine Sinnvolle Zerlegung des Exponenten und Verkürzt so den SM Algorithmus:\\ +Die letzten drei Ziffern entsprechen $2^{43112609} -1 \mod 1000$. Mithilfe von $\varphi(1000) = 400$ lässt sich nun der Exponent zerlegen. +\begin{align} +43112609 &= \alpha 400 + \beta\\ +&= 107781\cdot 400 + 209\\ +\end{align} +Da aber $a^{\varphi(n)}\equiv1\mod n$ ist, gilt: +\begin{align} + 2^{43112609} -1 \mod 1000&=2^{107781\cdot 400 + 209} -1 \mod 1000\\ + &=2^{209} -1 \mod 1000 +\end{align} +$2^{209}-1 \mod 1000$ lässt sich nun einfach mit dem Square and Multiply Algorithmus berechnen: +\begin{center} +$\begin{python} +import lib +lib.sqmult_tex(2,209,lambda x,y:(x*y)%1000,1) +\end{python}$ +\end{center} +Daraus Folgt nun +\begin{align} + p=2^{209} \mod 1000 &\equiv 512 \Rightarrow 2^{43112609}-1 \mod 1000 \equiv 511 +\end{align} \aufgabe{26}