Gymnasium Zittau/Langer/Verschluesselung/mathematische Grundfunktionen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
Im Folgenden beschäftigen wir uns mit einigen mathematischen Grundfunktionen, die für die Implementierung verschiedener Verschlüsselungsalgorithmen genutzt werden können. <br>
== Die Funktionen ''mod'' und ''div'' ==
Bei der Division natürlicher (bzw. ganzer) Zahlen bleibt oft ein Rest. <br>
Teste die beiden Funktionen für verschiedene Beispiele und notiere die Bedeutung von ''mod'' und ''div''.
<run id="4ea7d85d759fb">
writeln(14 mod 3);
</run>
<run id="4ea7d85d75a54">
writeln(14 div 3);
</run>
== Euklidischer Algorithmus ==
Bereits vor 2200 Jahren entwickelte Euklid einen Algorithmus zum Ermitteln des größten gemeinsamen Teilers (ggt) von zwei natürlichen Zahlen. <br>
# Teste die gegebene Funktion für mehrere Beispiele. <br>
# Erstelle eine Wertebelegungstabelle für diese Funktion für den ggt von 54 und 12.
<code id="4ea7e31c35bf7">
function euklid(a,b:integer):integer;
begin
if a=0 then result:=b
else begin while b<>0 do if a>b then a:=a-b
else b:=b-a;
result:=a;
end;
end;
</code>
<run id="4ea7e31c35c71">writeln(euklid(24,9))</run>
== Eine Funktion phi ==
Teste die Funktion phi für verschiedene Zahlen und beschreibe ihre mathematische Bedeutung. <br>
<code id="4ea7f43dbd985">
function phi(n:integer):boolean;
var i:integer; t:boolean;
begin
t:=true;
if n=1 then t:=false
else if not (n=2) then for i:=1 to n-1 do if euklid(n,i)<>1 then t:=false;
result:=t;
end;
</code>
<run id="4ea7f5b541a1e">writeln(phi(7))</run>
== Zufallszahlen ==
Die Funktion random(n) erzeugt eine Zufallszahl von 0 und n-1. <br>
<run id="4eb3b1f511e8f">writeln(random(10))</run>
#Teste die Funktion für einige Beispiele.
#Ergänze den untenstehenden Quelltext so, dass 10 Zufallszahlen von 0 bis 19 erzeugt werden.
#Verändere den untenstehenden Quelltext so, dass 10 Zufallszahlen von 5 bis 19 erzeugt werden.
<code id="4eb18a80811e4">var i: integer;</code>
<run id="4eb18a80814bb">
// hier kannst du ergänzen
writeln(random(20));</run>