Hi!
Leute habe mich mit den Primzahlen bechäftigt !
Als ich diese Thema gelesen habe dachte ich mir komm schau mal was du kanns wobei hir auch schon ein Wettbewerb gab!
08. Januar 2010: In einer Gemeinschaftsaktion haben internationale Institute einen 768-Bit-Schlüssel geknackt. Schon bald wollen sie den 1024-Bit-Schlüssel auslesen. Experten warnen vor großen Sicherheitslücken.
Die heute gebräuchlichen Schlüssel zur Sicherung etwa von Kreditkartennummern im Internet könnten nach Erkenntnissen von Forschern schon in einigen Jahren unsicher werden. Ein internationales Team unter Bonner Beteiligung hat jetzt einen 768 Bit langen Schlüssel geknackt. Das sei eine Zahl mit 232 Stellen und damit Weltrekord, teilte die Universität Bonn am Freitag mit.
Damit sind die Forscher dem aktuell gängigen Schlüssel von 1024 Bit schon ein Stück näher gekommen. Die Forscher nutzten ein Computernetzwerk. Auf einem herkömmlichen PC hätte das Knacken dieses Schlüssels nach ihren Angaben rund 2.000 Jahre gedauert.
Viele Verfahren zur Verschlüsselung sensibler Daten beruhen darauf, dass es äußerst schwierig ist, große Zahlen in ihre sogenannten Primfaktoren zu zerlegen. Primfaktoren sind diejenigen Primzahlen, die multipliziert die gesuchte Zahl ergeben. So hat etwa die Zahl 21 die Primfaktoren 3 und 7 (3 mal 7 gleich 21). Drei US-Forscher entwickelten 1977 ein Verfahren zur Datenverschlüsselung und nutzten es später auch kommerziell. Ihre nach ihren Initialen "RSA" genannte Technik steckt inzwischen in jedem Internet-Browser. Ein kleines Programm verschlüsselt dort etwa Kreditkartennummern so, dass böswillige Lauscher mit ihnen nichts anfangen können.
Die jetzt geknackte Zahl trägt die nüchterne Bezeichnung RSA-768, das heißt, sie hat 768 Bit. In Dezimalschreibweise entspricht das 232 Stellen. Damit handelt es sich um das größte Zahlenungetüm von allgemeiner Form, das bislang in seine Primfaktoren zerlegt wurde. "Die Zerlegung eines 1024-Bit-Schlüssels wäre um drei Größenordnungen schwieriger als das jetzt abgeschlossene Projekt", sagte Prof. Jens Franke vom Institut für Mathematik der Universität Bonn. Dennoch werde der erste 1024-Bit-Schlüssel vermutlich noch vor Ende des Jahrzehnts geknackt.
So da habe ich mich halt versucht, die Funktionen von Wettbewerb habe ich nicht schlagen können!
Aber ich habe eine Möglichkeit gefunden Primzahlen zu Prüfen!
Func: IsPrim
Spoiler anzeigen
; #FUNCTION# ;=============================================================================================
;
; Name...........: IsPrim($maxZahl)
; Description ...: Prüft ob eine Zahl eine Primzahl ist
; Syntax.........: $maxZahl = eine Zahl
; Parameters ....:
; Return values .: 1/ ist 0/keine Primzahl
;
;
; Author ........: Kleiner27 (http://www.AutoIT.de)
;
; ;=========================================================================================================
Func IsPrim($maxZahl)
If ($maxZahl < 2) Then Return 0
If ($maxZahl = 2) Or ($maxZahl = 3) Then Return 1
If (Mod($maxZahl, 2)) * (Mod($maxZahl, 3)) > 0 Then
For $i = 6 To Round(Sqrt($maxZahl) + 1) Step 6
If (((Mod($maxZahl, ($i - 1))) * (Mod($maxZahl, ($i + 1)))) = 0) Then Return 0
Next
Return 1
EndIf
Return 0
EndFunc ;==>IsPrim
und noch IsPrim_2 die bei 1000000 rund 4 sec. braucht
Spoiler anzeigen
; #FUNCTION# ;=============================================================================================
;
; Name...........: IsPrim_2($Prim)
; Description ...: Prüft ob eine Zahl eine Primzahl ist
; Syntax.........: $Prim = eine Zahl
; Parameters ....:
; Return values .: True /False
;
;
; Author ........: Kleiner27 (http://www.AutoIT.de)
;
; ;=========================================================================================================
Func IsPrim_2($Prim)
Dim $Qu_W = Sqrt($Prim)
Dim $p[$Prim + 1]
Dim $lngP = 1
Do
Do
$lngP += 1
Until Not $p[$lngP]
For $lngI = $lngP To $Prim Step $lngP
$p[$lngI] = 1
Next
Until ($lngP > $Qu_W)
Return Not $p[$Prim]
EndFunc ;==>IsPrime
Und die GetPrim die bei maxZahl ( 1299710) rund 12 Optimiert auf rund 6-6.5 sec. braucht
Spoiler anzeigen
; #FUNCTION# ;=============================================================================================
;
; Name...........: GetPrim($MaxZ, $Delim = ' ')
; Description ...: Listet die Primzahlen bis Max
; Syntax.........: $MaxZ = eine Zahl / $Delim Trennung der ausgabezahlen
; Parameters ....:
; Return values .: Alle Primzahlen bis Max
;
;
; Author ........: Kleiner27 (http://www.AutoIT.de)
;
; ;=========================================================================================================
Func GetPrim($MaxZ, $Delim = ' ')
If ($MaxZ < 2) Then Return 0
If ($MaxZ = 3) Then Return 2
Dim $Flag[$MaxZ + 1], $Prim = 2 & $Delim
For $i = 1 To $MaxZ Step 2
$Flag[$i] = 1
Next
For $i = 3 To $MaxZ Step 2
If ($Flag[$i]) Then
For $e = ($i ^ 2) To $MaxZ Step $i
$Flag[$e] = 0
Next
$Prim &= $i & $Delim
EndIf
Next
Return $Prim
EndFunc ;==>GetPrim
LG Kleiner