GK Informatik 12 Arbeitsblatt 06 22.02.2007 Faktorisieren von natürlichen Zahlen Rückblick auf das Arbeitsblatt 05: In der Aufgabe 1 des letzten Arbeitsblatts wurde festgestellt, dass sich die Zeitdauer für das Faktorisieren einer natürlichen Zahl ungefähr verdoppelt, wenn sich die Zahl um vier Stellen verlängert. Für das Faktorisieren einer 48-stelligen Dezimalzahl benötigt ein PC im ComputerLabor ungefähr 40 Sekunden, für das Faktorisieren einer 1-stelligen Dezimalzahl ungefähr 0,016 Sekunden. Mit diesen Werten können Abschätzungen für die Zeitdauer des Faktorisierens einer nstelligen Dezimalzahl getroffen werden, z.B.: • n = 310: 310 : 4 = 77,5 ⇒ Zeitdauer(310) = Zeitdauer(1)A277 ≈ 2,4A1021 Sekunden ≈ 7,7A1013 Jahre (310-48) : 4 = 65,5 ⇒ Zeitdauer(310) = Zeitdauer(48)A265 ≈ 1,5A1021 Sekunden ≈ 4,7A1013 Jahre Beide Zeitwerte haben die gleiche Größenordnung. • n = 464: 464 : 4 = 116 ⇒ Zeitdauer(464) = Zeitdauer(1)A2116 ≈ 1,3A1033 Sekunden ≈ 4,2A1025 Jahre (464-48) : 4 = 104 ⇒ Zeitdauer(464) = Zeitdauer(48)A2104 ≈ 8,1A1032 Sekunden ≈ 2,6A1025 Jahre Auch hier haben beide Zeitwerte die gleiche Größenordnung. Für die Zeitdauer eines Jahres wurden bei den Berechnungen 365,256 Tage angesetzt (Schaltjahre!). Zum Vergleich: Das Universum ist ungefähr 12A109 = 12 Milliarden Jahre alt. Die Faktorisierung der 310-stelligen Zahl dauert damit schon über 6000-mal länger als das Universum alt ist! Aufgabe: Schreibe in Delphi ein Programm, das eine natürliche Zahl in ihre Primfaktoren zerlegt und sowohl die einzelnen Primfaktoren als auch deren Gesamtanzahl ausgibt. Teste dein Programm unter anderem mit den folgenden Zahlen: • 1234567 • 22022007 • 23571113 • 994008131 • 2147483647 Hinweis: Um auch noch größere Zahlen mit dem Programm faktorisieren zu können, sollte der Datentyp Int64 gewählt werden, der Zahlen bis 263-1 darstellen kann. Eine über ein Edit-Feld eingegebene Zahl kann mit der Funktion StrToInt64 von einem String in diesen speziellen Zahldatentyp umgewandelt werden.