...

Text file src/github.com/alecthomas/chroma/lexers/testdata/abap.actual

Documentation: github.com/alecthomas/chroma/lexers/testdata

     1*&---------------------------------------------------------------------*
     2*& Report  /WUE/AUFGABE_PRIMZAHL
     3*&
     4*&---------------------------------------------------------------------*
     5*& Anmerkung: um bei einer Zahl entscheiden zu können, ob diese eine Primzahl ist,
     6*&            genügt es die Primzahlen zu prüfen die kleiner gleich der Würzel der Zahl sind
     7*&
     8*&---------------------------------------------------------------------*
     9REPORT /wue/aufgabe_primzahl.
    10
    11
    12PARAMETERS p_range TYPE i.
    13
    14"Tabelle in der alle gefundenen Primzahlen gespeichert werden, die kleiner gleich
    15"der Würzel der eingegebenen Zahl sind
    16DATA gt_prim_num TYPE TABLE OF i.
    17
    18"Diese Variable dient dazu, alle Zahlen <= der eingegebenen Zahl und >= 2 aufzustellen
    19DATA g_number    TYPE i VALUE 1.
    20
    21"Diese Variable dient dazu, zu sagen, ob die aktuelle g_number eine Primzahl ist oder nicht
    22DATA g_is_prime  TYPE abap_bool.
    23
    24"mit sqrt( zahl1 ) kann die Quadratwurzel der Zahl1 berechnet werden
    25DATA(g_sqrt_range) = sqrt( p_range ).
    26
    27
    28
    29"da die zu prüfenden Zahlen bei der 2 beginnend durch Addition von 1 aufgestellt werden
    30"muss die Schleife lediglich p_range - 1 male durchlaufen werden
    31DO p_range - 1 TIMES.
    32
    33  "zählt die zu prüfende Zahlen hoch
    34  ADD 1 TO g_number.
    35
    36  "grundsätzlich wird solange, bis es nicht widerlegt ist angenommen, dass g_number eine Primzahl ist
    37  g_is_prime = abap_true.
    38
    39  "Jede Zahl die in der Tabelle gt_prim_num enthalten ist wird geprüft, ob g_number durch diese ohne Rest teilbar ist
    40  LOOP AT gt_prim_num ASSIGNING FIELD-SYMBOL(<g_prim>).
    41
    42    "Durch Zahl1 MOD Zahl2 kann der Rest, der bei Zahl1 / Zahl2 herauskommt ermittelt werden
    43    "Sobald dieser bei g_number / <g_prim> 0 ist, handelt es sich bei g_number um keine Primzahl und somit muss diese nicht
    44    "weiter überprüft werden, folglich kann die Loop-Schleife mit EXIT verlassen werden
    45    IF g_number MOD <g_prim> = 0.
    46      g_is_prime = abap_false.
    47      EXIT.
    48    ENDIF.
    49
    50  ENDLOOP.
    51
    52  "Wenn nicht widerlegt werden konnte, dass g_number eine Primzahl ist, wird diese ausgegeben
    53  IF g_is_prime = abap_true.
    54
    55    "Wenn die neu gefundene Primzahl <= g_sqrt_range, wird diese in die Tabelle gt_prim_num eingefügt (Erklärung siehe Anmerkung)
    56    IF g_number <= g_sqrt_range.
    57      INSERT g_number INTO TABLE gt_prim_num.
    58    ENDIF.
    59    WRITE g_number.
    60  ENDIF.
    61
    62ENDDO.

View as plain text