Aus Langeweile habe ich ein Word-Makro geschrieben, welches die ersten 25000 Primzahlen berechnet. Die Primzahlen werden ans Ende eines Worddokuments geschrieben.
Womöglich ist es ja für den einen oder die andere von Interesse… ;-)
Option Explicit
Sub Primzahlen()
Const ciMax As Integer = 25000 ' 25000 Primzahlen
Dim aPrimzahlen() As Long
Dim iPruefling As Long, iIndex As Integer
Dim iAnzahl As Long ' Long, damit die Funktion "inc" funktioniert.
Dim bTeilbar As Boolean, oParagraf As Paragraph
Dim iWurzel As Long
iAnzahl = 0
iPruefling = 2
ReDim aPrimzahlen(1 To ciMax)
While iAnzahl < ciMax
bTeilbar = False
iWurzel = Round(Sqr(iPruefling), 0) + 1 ' Plus 1 wegen eventuellem Abrunden
For iIndex = 1 To iAnzahl
' Es reicht, bis zur Quadratwurzel des Prüflings zu testen.
If aPrimzahlen(iIndex) >= iWurzel Then
Exit For
End If
If iPruefling Mod aPrimzahlen(iIndex) = 0 Then
bTeilbar = True
Exit For
End If
Next
If Not bTeilbar Then
inc iAnzahl
aPrimzahlen(iAnzahl) = iPruefling
End If
inc iPruefling
Wend
For iIndex = LBound(aPrimzahlen) To UBound(aPrimzahlen)
Set oParagraf = ActiveDocument.Paragraphs.Add(ActiveDocument.Paragraphs.Last.Range)
oParagraf.Range.Text = CStr(aPrimzahlen(iIndex)) & vbCrLf
Set oParagraf = Nothing ' Nötig; nur: Warum?
Next
End Sub
Sub inc(ByRef iZahl As Long)
iZahl = iZahl + 1
End Sub