Primzahlenberechner
Übersicht

Gandalf13Betreff: Primzahlenberechner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hat jemand von euch eine idee wie ich die überprüfung für einen primzahlenberechner proggen könnte?! ![]() ihr wisst eh teilt oder teilt nicht oder hat bb2d eine eigen funktion? ![]() hoffe auf viele code !! ![]() danke im voraus! ![]() |
||
Jeder hat das Recht dumm zu sein.
Einige missbrauchen diese Recht leider ständig! |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Primzahl = True
For i = 2 To x / 2 If (x Mod i) = 0 Then Primzahl = False Next Ist natürlich nicht optimiert oder so. Einfach alle Zahlen getestet. |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Primzahl = True If (zahl Mod 2) = 0 Primzahl = False Else i = 3 Repeat If (zahl Mod i) = 0 Primzahl = False Goto Ende End if i = i + 2 Until i * i > zahl End If .Ende War nur so ein Gedanke! Etwas komplizierter, aber muss weniger Zahlen testen! Ich frage mich ob es dann schneller ist! Wenn überhaupt dann wahrscheinlich nur minimal! mfG Ctuchik |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist schneller. Ich habs getestet ![]() ![]() Man muss aber auch noch auf 1 testen. |
||
Apocalyptic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Edlothiol hat Folgendes geschrieben: Man muss aber auch noch auf 1 testen.
Wie jetzt? Du willst überprüfen, ob eine Zahl durch eins teilbar ist? Welche ist das denn nicht? |
||
Suum cuique
[ www.ffs-net.de.vu ] [ Raycaster ] |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Arghl. Nein, ich will nicht überprüfen, ob die Zahl durch eins teilbar ist, sondern ob sie = 1 ist. Dann wäre sie nämlich trotzdem keine Primzahl. | ||
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prinzipiell sollten schonmal alle Zahlen die hinten eine 0/2/4/5/6/8/9 haben rausgeschmissen werden, dann gehts noch deutlich schneller.
(wobei 2/5 selber Primzahlen sind, also müsste man das noch mit berücksichtigen). |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
19 ? *hüstel* | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
tja triton, wahr wohl nix | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bis auf die 9 wars aber richtig da 0 2 4 6 8 vielfaches von 2 wären und 5 vielfaches von 5. | ||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man braucht sowieso das Vielfache von Primzahlen nicht zu prüfen. | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, bis zum posten des Beitrags war ich mir vollkommen sicher, dass jede Zahl mit ner 9 durch 3 Teilbar ist ^^
mag daran liegen, dass mir nur so geistreiche Zahlen wie 999 und 99 eingefallen sind um das zu untermauern.. oops ![]() |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
generell muss man nur Teilbarkeit durch Primzahlen feststellen, dumm nur dass man diese gerade erst sucht ![]() Ich glaube meine Methode ist schon recht effektiv! Ich denke gerade noch über ne andere Lösung nach, aber ich glaube nicht dass sie schneller ist, höchstens bei sehr großen Zahlen! mfG Ctuchik |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
es gibt da noch so einen Algorytmus der irgendwas mit ... - Sieb heisst der geht so Code: [AUSKLAPPEN] Dim Primz(1000) For x = 2 to 1000 if PrimZ(x) = 0 then Print x For y = x to 1000 step x if y>1000 then exit PrimZ(y)=1 next end if next Waitkey end Ist aber blöd bei sehr hohen Zahlen |
||
![]() |
littleRabbit |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Sieb des Pythargoras oder weiß Gott wie der hieß/geschrieben wird. ![]() |
||
Absoluter Beginner |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sieb des Eratosthenes ![]() (Pythagoras war der mit dem rechtwinkligen Dreieck) und Algorithmus schreibt man mit i ![]() |
||
Error Inside! |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Hi, der Code von Simi scheint mir nicht so recht zu laufen (Step Value must be constant).
Meine Idee: Code: [AUSKLAPPEN] A= 10000 ;Zu überprüfender Zahlenraum Dim IstPrim (A) For I=1 To A IstPrim (I)=1 ; alle Zahlen vorläufig prim setzen Next Wurzel=Ceil(Sqr(A)) ; Höchste Prpüfzahl festlegen For I=2 To Wurzel If IstPrim(I)=1 ; Falls noch nicht als nichtprim markiert überprüfen MaxMulti= Ceil (A/I) ; Höchsten Multiplikator z mit z*I = A wählen For J=2 To MaxMulti ; Vielfache als nichtprim markieren IstPrim(J*I)=0 Next EndIf Next For I=2 To A ; Primzahlen ausgeben If IstPrim(I)=1 Print I Next; WaitKey Hat den Vorteil, dass nur nicht bereits markierte Zahlen überhaupt überprüft werden. Ciao Andreas |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für eine Liste aller Primzahlen ist das hier wohl ideal:
Code: [AUSKLAPPEN] Graphics 350,850,0,2 Print "Working..." Dim Primzahlen(100000) Const range = 1000000 Const pause = False Global max_prims = 0 Global prints = 0 Global starttime = MilliSecs() Primzahlen(0) = 2 For z = 3 To range If pause = True And prints > 63 Print "Press a key..." WaitKey() prints = 0 End If If IsPrimZahl(z) max_prims = max_prims + 1 Primzahlen(max_prims) = z Print z prints = prints + 1 End If Next Print "Benötigte Zeit: " + Str(MilliSecs()-starttime) + " Millisekunden" Print "Program has ended ... Press a key..." WaitKey() End Function IsPrimZahl(zahl%) a=0 Repeat If (zahl Mod Primzahlen(a)) = 0 Return False End If a = a + 1 Until Primzahlen(a)*Primzahlen(a) > zahl Or a > max_prims Return True End Function man beachte: Wenn mehr als 100000 Primzahlen berechnet werden ist der Array voll! mfG Ctuchik |
||
- Zuletzt bearbeitet von Ctuchik am Do, Feb 19, 2004 23:43, insgesamt einmal bearbeitet
IonPainter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab mal simi's code korrigiert
Code: [AUSKLAPPEN] Const Zahlen = 1000000 Dim Primz(Zahlen) For x = 2 To Zahlen If PrimZ(x) = 0 Then Print x For y = x To Zahlen y = y + x If y>Zahlen Then Exit PrimZ(y)=1 Next End If Next WaitKey End weiss aber nicht was daran lahm sein soll ausser die print funktion, die eine million zahlen haut der bei mir in ca 20 secs durch... |
||
![]() |
Ctuchik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dieser Code liefert massig Zahlen die definitiv KEINE Primzahlen sind!
Ich hab meinen Code nochmal überarbeitet, er wird jetzt bei Zahlen bis 1000000 nicht mehr viel langsamer! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group