Sub
code1()
Dim
x1, x2, ti, i, max, pri
i = 1
ti = Timer
max = 1000000
For
x1 = 2
To
max
pri =
True
For
x2 = 2
To
Sqr(x1)
If
x1
Mod
x2 = 0
Then
pri =
False
Exit
For
End
If
Next
x2
If
pri
Then
Cells(i, 1) = x1
i = i + 1
End
If
Next
x1
End
Sub
Sub
code2()
Dim
x1, x2, ti, i, max, pri
i = 2
ti = Timer
max = 1000000
Cells(1, 2) = 2
For
x1 = 3
To
max
Step
2
pri =
True
For
x2 = 3
To
Sqr(x1) + 1
Step
2
If
x1
Mod
x2 = 0
Then
pri =
False
Exit
For
End
If
Next
x2
If
pri
Then
Cells(i, 2) = x1
i = i + 1
End
If
Next
x1
End
Sub
Sub
code1_arr()
Dim
x1, x2, ti, i, max, pri
Dim
ar(1
To
80000, 1
To
1)
i = 1
ti = Timer
max = 1000000
For
x1 = 2
To
max
pri =
True
For
x2 = 2
To
Sqr(x1)
If
x1
Mod
x2 = 0
Then
pri =
False
Exit
For
End
If
Next
x2
If
pri
Then
ar(i, 1) = x1
i = i + 1
End
If
Next
x1
Cells(1, 3).Resize(UBound(ar), 1).Value = ar
End
Sub
Sub
code2_arr()
Dim
x1, x2, ti, i, max, pri
Dim
ar(1
To
80000, 1
To
1)
i = 2
ti = Timer
max = 1000000
ar(1, 1) = 2
For
x1 = 3
To
max
Step
2
pri =
True
For
x2 = 3
To
Sqr(x1) + 1
Step
2
If
x1
Mod
x2 = 0
Then
pri =
False
Exit
For
End
If
Next
x2
If
pri
Then
ar(i, 1) = x1
i = i + 1
End
If
Next
x1
Cells(1, 4).Resize(UBound(ar), 1).Value = ar
End
Sub
Sub
vorschlag()
Dim
candidate
As
Long
Dim
max
As
Long
Dim
isPrime
As
Boolean
Dim
i
As
Long
, i2
As
Long
Dim
sqr_candidate
As
Double
Dim
primes(1
To
80000, 1
To
1)
As
Long
max = 1000000
i = 1
primes(i, 1) = 2
primes(2, 1) = 3
For
candidate = 3
To
max
Step
2
isPrime =
True
i2 = 2
sqr_candidate = Sqr(candidate)
Do
Until
primes(i2, 1) > sqr_candidate
If
candidate
Mod
primes(i2, 1) = 0
Then
isPrime =
False
Exit
Do
End
If
i2 = i2 + 1
Loop
If
isPrime
Then
i = i + 1
primes(i, 1) = candidate
End
If
Next
candidate
Cells(1, 5).Resize(i, 1).Value = primes
End
Sub
Sub
test_them()
Dim
i
As
Long
, t
Const
n = 2
Call
code1
Call
code2
Call
code1_arr
Call
code2_arr
Call
vorschlag
t = Timer
For
i = 1
To
n
Call
code1
Next
Debug.Print
"code1: "
, Timer - t
t = Timer
For
i = 1
To
n
Call
code1_arr
Next
Debug.Print
"code1_arr: "
, Timer - t
t = Timer
For
i = 1
To
n
Call
code2
Next
Debug.Print
"code2: "
, Timer - t
t = Timer
For
i = 1
To
n
Call
code2_arr
Next
Debug.Print
"code2_arr: "
, Timer - t
t = Timer
For
i = 1
To
n
Call
vorschlag
Next
Debug.Print
"vorschlag: "
, Timer - t
msgbox
"fertig: siehe Direktfenster"
End
Sub