Seite 1 von 2
Primzahlen generieren
Verfasst: 02.06.2008 22:34
von Josef Sniatecki
Ich habe hier einen kruzen Code für Leuts die schnell
Primzahlen sehen wollen:
Code: Alles auswählen
#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.
Re: Primzahlen generieren
Verfasst: 02.06.2008 22:40
von ts-soft
Josef Sniatecki hat geschrieben:
Würde mich über weitere Suchverfahren oder Kommentare freuen.
Die Boardsuche ist ein gutes Suchverfahren
http://www.purebasic.fr/german/viewtopi ... 035#124035
Verfasst: 02.06.2008 23:01
von STARGÅTE
cool, da habe ich ja sogar was gepostet ^^
wie dort auch schon gesagt minimiert das Wurzelziehen die Rechenzeit enorm !
Das hier würde bei dir schon mehrere Sekunden dauern
Code: Alles auswählen
#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
Verfasst: 03.06.2008 00:39
von Kaeru Gaman
warum sind eigentlich alle so heiß auf primzahlen....
das is irgendwie so'n sport-mäßiges dingens für nerds, oder?
Verfasst: 03.06.2008 10:25
von gnasen
Es gibt verschiedene Gründe für die Ermittlung von Primzahlen:
a) weil man es kann
b) weil man es schneller kann als andere
c) zB zur Verschlüsslung nutzen
Wenn ich mir die Liste anschaue, muss ich allerdings zugeben, dass das noch nicht das Optimum an Gründen ist...
Verfasst: 03.06.2008 10:55
von STARGÅTE
das hier ist der Grund:
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.
Verfasst: 03.06.2008 13:05
von Fluid Byte
gnasen hat geschrieben:a) weil man es kann
b) weil man es schneller kann als andere
=
Kaeru Gaman hat geschrieben:das is irgendwie so'n sport-mäßiges dingens für nerds, oder?
Verfasst: 03.06.2008 13:20
von DarkDragon
Code: Alles auswählen
; 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.

Verfasst: 03.06.2008 14:04
von Fluid Byte
Gibts bei dir eigentlich auch mal Posts ohne das

symbol?
Verfasst: 03.06.2008 14:37
von ZeHa
DarkDragon sollte das direkt in seine Signatur mitaufnehmen
