25000 Primzahlen mit MS Word und VBA

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… ;-)

  1. Option Explicit
  2.  
  3. Sub Primzahlen()
  4. Const ciMax As Integer = 25000 ' 25000 Primzahlen
  5. Dim aPrimzahlen() As Long
  6. Dim iPruefling As Long, iIndex As Integer
  7. Dim iAnzahl As Long ' Long, damit die Funktion "inc" funktioniert.
  8. Dim bTeilbar As Boolean, oParagraf As Paragraph
  9. Dim iWurzel As Long
  10. iAnzahl = 0
  11. iPruefling = 2
  12. ReDim aPrimzahlen(1 To ciMax)
  13. While iAnzahl < ciMax
  14. bTeilbar = False
  15. iWurzel = Round(Sqr(iPruefling), 0) + 1 ' Plus 1 wegen eventuellem Abrunden
  16. For iIndex = 1 To iAnzahl
  17. ' Es reicht, bis zur Quadratwurzel des Prüflings zu testen.
  18. If aPrimzahlen(iIndex) >= iWurzel Then
  19. Exit For
  20. End If
  21. If iPruefling Mod aPrimzahlen(iIndex) = 0 Then
  22. bTeilbar = True
  23. Exit For
  24. End If
  25. Next
  26. If Not bTeilbar Then
  27. inc iAnzahl
  28. aPrimzahlen(iAnzahl) = iPruefling
  29. End If
  30. inc iPruefling
  31. Wend
  32. For iIndex = LBound(aPrimzahlen) To UBound(aPrimzahlen)
  33. Set oParagraf = ActiveDocument.Paragraphs.Add(ActiveDocument.Paragraphs.Last.Range)
  34. oParagraf.Range.Text = CStr(aPrimzahlen(iIndex)) & vbCrLf
  35. Set oParagraf = Nothing ' Nötig; nur: Warum?
  36. Next
  37. End Sub
  38.  
  39. Sub inc(ByRef iZahl As Long)
  40. iZahl = iZahl + 1
  41. End Sub