19500 V Algorithmen und Programmieren I
|
Rojas
|
Definieren Sie eine Funktion, die die multiplikative Inverse (Modulo p) von einer Zahl x durch einen sequentiellen Test der Zahlen 1 bis p-1 findet. Dabei soll p eine Primzahl sein.
Implementieren Sie den RSA-Algorithmus für die Zahlen p=17 und q=23. Testen Sie die rsa_encode- und rsa_decode-Funktionen! Verwenden Sie eine schnelle Methode zur Berechnung der Exponentialfunktion.
Definieren Sie eine Funktion, die eine positive Dezimalzahl in 8-Tupel von Bits verwandelt. Gehen Sie wie in der Vorlesung vor, indem Sie die Zahl wiederholt dividieren.
Definieren Sie die Funktionen add, sub für 5-Tupel von Bits (vom Typ Int), die Zweierkomlementzahlen darstellen.
Definieren Sie die Funktionen add, sub, mul und div für rationale Zahlen. Die Zahlen sollen 2-Tupel von Ganzen Zahlen sein, wie sie in der Vorlesung eingeführt wurden (2-Tupel von Int). Die Zähler und Nenner sollen nach der Operation teilerfremd sein. Um dies zu erreichen, können die die Haskell-Funktion gcd verwenden.