Sieb des Erathosthenes

  • kleiner graphischer Erathosthenes Sieb

    [autoit]

    #include <GUIConstants.au3>
    Global $width = 10, $height = 10, $blocked[101][101], $primzahl[101]
    For $i = 1 To 100
    For $j = 1 To 100
    $blocked[$i][$j] = 0
    Next
    Next
    For $i = 1 To 100
    $primzahl[$i] = 0
    Next

    [/autoit][autoit][/autoit][autoit]

    GUICreate("", 1000, 510)
    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    For $i = 2 To 50
    _draw_label($i)
    For $j = 1 To 100
    If ($i * $j) > 100 Then ExitLoop
    _draw_rect($i * $j, $i, "0x000000")
    $blocked[$i * $j][$i] = 1
    Next
    Next
    For $i = 2 To 100
    For $j = 1 To 50
    If $blocked[$i][$j] Then
    If $primzahl[$j] Then
    ExitLoop
    Else
    $primzahl[$j] = 1
    _draw_line($i, $j, "0x0000FF")
    ExitLoop
    EndIf
    Else
    _draw_rect($i, $j, "0x666666")
    EndIf
    Next
    Next

    [/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _draw_rect($xpos, $ypos, $color)
    GUICtrlCreateGraphic($xpos * $width, $ypos * $height, $width, $height)
    GUICtrlSetBkColor(-1, $color)
    GUICtrlSetColor(-1, 0)
    EndFunc ;==>_draw_rect
    Func _draw_line($xpos, $ypos, $color)
    GUICtrlCreateGraphic(10, $ypos * $height, $xpos * $width - 10, $height)
    GUICtrlSetBkColor(-1, $color)
    GUICtrlSetColor(-1, 0)
    EndFunc ;==>_draw_line
    Func _draw_label($row)
    GUICtrlCreateLabel($row, 0, $row * $height)
    EndFunc ;==>_draw_label

    [/autoit]