Die "Standardmethode" um das Sieb des Erathostenes zu implementieren ist ein großes Array aus einsen, in dem man die Vielfachen auf 0 setzt (oder umgekehrt). Nachdem der Standardwert eines boolean AFAIK false ist, ist es sinnvolle die gestrichenen auf true zu setzen:
Code:
Dim sieb() As Boolean
Dim max As Integer 'wenn du größere Zahlen als 32.767 berechnen willst nimm halt double
max=1000 'Nur Primzahlen < 1000 berechnen
For i=1 to max
Dim j As Integer
j=2*i
Do
sieb(j)=false
j=j+i
Loop while (j<max/2)
next i
For i=1 to max
if sieb(i) then
'Zahl ist primzahl
else
'Zahl ist keine Primzahl
end if
Next i
Sollte funktionieren, muß aber nicht (habe z.B. keine Ahnung wie VB Arrays behandelt)...
Jak
____________________________________
Join the DNRC |
Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)