28.03.2014 Aufrufe

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

(define (kleinster-teiler n)<br />

(define (finde-teiler test)<br />

(cond ((> (quadrat test) n) n)<br />

((teilt? test n) test)<br />

(else (finde-teiler (+ test 1)))))<br />

(finde-teiler 2))<br />

(define (teilt? a b) (= (remainder b a) 0))<br />

(define (primzahl n) (= (kleinster-teiler n) n))<br />

• Ergebnis aus Zahlentheorie: kleiner Fermatscher Satz: Wenn n Primzahl<br />

ist, dann 0 < a < n ⇒ a n mod n = a. Falls n also keine Primzahl<br />

ist, dann gibt es gibt es mit großer Wahrscheinlichkeit viele Zahlen<br />

0 < a < n mit a n mod n ≠ a. Teste also a n mod n = a für zufällige<br />

Zahlen a, je mehr positive Tests, um so wahrscheinlicher ist n eine<br />

Primzahl. Schnelle Funktion für Potenz mit Modulo:<br />

(define (potmod b e n)<br />

(cond ((= e 0) 1)<br />

((gerade? e) (remainder (quadrat (potmod b (/ e 2) n)) n))<br />

(else (remainder (* b (potmod b (- e 1) n)) n))))<br />

Zum testen: Wähle Zufallszahl a mit 2 ≦ a ≦ n−1, teste a n mod n = a.<br />

(define (fermat-test n)<br />

(define a (+ 2 (random (- n 2))))<br />

(= (potmod a n n) a))<br />

Dieser Test soll x-mal ausgeführt werden:<br />

(define (fast-prime? n x)<br />

(cond ((= x 0) \#t)<br />

((fermat-test? n) (fast-prime? n (- x 1)))<br />

(else \#f)))<br />

Besonderheit: Probalistische Methode: falls Ergebnis true ist die Zahl sicher<br />

keine Primzahl, andernfalls ist sie wahrscheinlich eine Primzahl - je mehr<br />

Tests, umso höher die Wahrscheinlichkeit.<br />

Argument für probalistische Algorithmen: Auch völlig korrekte Algorithmen<br />

können eventuell falsch sein, es gibt eben ohnehin nur mit einer gewissen<br />

Wahrscheinlichkeit eine richtige Lösung.<br />

16

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!