Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
#Min=2 ;Von 2 bis ...
#Max=100
Global Teiler.l
Global MaxTeiler.l
Global Zahl.l
For Zahl=#Min To #Max
For Teiler=2 To Zahl
If Zahl%(Teiler)=0 And Zahl<>Teiler
Debug Str(Zahl)+" ist teilbar durch "+Str(Teiler)
Break
ElseIf Teiler=Zahl
Debug Str(Zahl)+" ist eine Primzahl."
Break
EndIf
Next
Next
Würde mich über weitere Suchverfahren oder Kommentare freuen.
"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
#Min=1000000 ;Von 2 bis ...
#Max=1000100
Global Teiler.l
Global MaxTeiler.l
Global Zahl.l
For Zahl=#Min To #Max
Z = Int(Sqr(Zahl))
For Teiler=2 To Z
If Zahl%(Teiler)=0 And Zahl<>Teiler
; Debug Str(Zahl)+" ist teilbar durch "+Str(Teiler)
Break
ElseIf Teiler=Z
Debug Str(Zahl)+" ist eine Primzahl."
Break
EndIf
Next
Next
Wiki hat geschrieben:
Es ist jedoch kein Verfahren bekannt, das effizient beliebig große Primzahlen generiert, so dass es stets eine größte bekannte Primzahl gab, seitdem sich die Menschen mit Primzahlen befassen. Derzeit ist es 2^32.582.657 − 1, eine Zahl mit 9.808.358 (dezimalen) Stellen, gefunden am 4. September 2006 von einem Professorenteam der Central Missouri State University im Rahmen von George Woltmans GIMPS-Projekt (Great Internet Mersenne Prime Search) zur Suche von Mersenne-Primzahlen. Für den ersten Primzahlbeweis einer Zahl mit mehr als 10 Millionen Dezimalstellen hat die Electronic Frontier Foundation einen Preis von 100.000 US-Dollar ausgeschrieben.
Ne im ernst, die meisten hier machen das zum Spaß, denn verwenden kann man die teile nur in höheren Dimensionen, die aber mit unseren Mitteln nicht erreicht werden.
; Sieb des Eratosthenes
#Max = 100000
Global Dim primzahlen.l(#Max)
; 1 fällt weg, wir beginnen auch erst bei 2
primzahlen(0) = 1
primzahlen(1) = 1
; Ermitteln der Primzahlen
For k = 2 To #Max
If primzahlen(k) = 0
; Streiche alle 1..z * k Zahlen, da sie durch k geteilt werden können
n = 2
m = n * k
While m <= #Max
primzahlen(m) = 1
n + 1
m = n * k
Wend
EndIf
Next k
; Ausgeben der Primzahlen
For k = 2 To #Max
If primzahlen(k) = 0
Debug k
EndIf
Next k
Alle Elemente des Arrays die nun 0 sind sind Primzahlen.
Sowas lernt man bei uns in Mathematik.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.