Lerne und übe ABAP – Primfaktoren

Lerne und übe ABAP. In der ABAP-Übung „Prime Factors“ implementierst Du ein ABAP-Programm, um die Primfaktoren einer gegebenen natürlichen Zahl zu berechnen. Es gibt 40 geniale ABAP Übungen auf exercism. Du kannst diese Übung entweder in Deinem SAP-System ausprobieren oder Dich kostenlos auf der Plattform anmelden und die Übung absolvieren. Du kannst Dir sogar Lösungen von anderen Nutzen ansehen und dadurch Deine Lösung vergleichen.

Aufgabenstellung

Berechne die Primfaktoren einer gegebenen natürlichen Zahl.

Eine Primzahl ist nur gleichmäßig durch sich selbst und 1 teilbar.

Beachte, dass 1 keine Primzahl ist.

Wie lauten die Primfaktoren von 60?

  • Unser erster Teiler ist 2. 2 geht durch 60, es bleibt 30.
  • 2 geht durch 30, es bleibt 15.
    • 2 geht nicht sauber in 15 über. Gehen wir also zu unserem nächsten Teiler, 3, über.
  • 3 geht sauber durch 15, es bleibt 5.
    • 3 geht nicht sauber in 5 über. Der nächste mögliche Faktor ist 4.
    • 4 geht nicht sauber in 5 über. Der nächste mögliche Faktor ist 5.
  • 5 geht sauber in 5 über.
  • Es bleibt nur noch 1 übrig, und damit sind wir fertig.

Unsere erfolgreichen Teiler in dieser Berechnung stellen die Liste der Primfaktoren von 60 dar: 2, 2, 3 und 5.

Du kannst das selbst überprüfen:

  • 2 * 2 * 3 * 5
  • = 4 * 15
  • = 60
  • Erfolgreich!

Beispiel Programmierung

CLASS zcl_prime_factors DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    TYPES integertab TYPE STANDARD TABLE OF i WITH EMPTY KEY.
    METHODS factors
      IMPORTING
        input         TYPE int8
      RETURNING
        VALUE(result) TYPE integertab.
  PROTECTED SECTION.
  PRIVATE SECTION.

ENDCLASS.


CLASS zcl_prime_factors IMPLEMENTATION.
  METHOD factors.
    " add solution here
    DATA: lv_remainer TYPE int8,
          lv_factor   TYPE int8.
    lv_factor = 2.
    lv_remainer = input.
    WHILE lv_factor <= lv_remainer.
      IF lv_remainer MOD lv_factor = 0.
        APPEND lv_factor TO result.
        lv_remainer = lv_remainer / lv_factor.
      ELSE.
        lv_factor = lv_factor + 1.
      ENDIF.
    ENDWHILE.
  ENDMETHOD.

ENDCLASS.

Erklärung

Die Methode factors ist eine Methode der Klasse zcl_prime_factors. Sie akzeptiert eine Eingabezahl vom Typ int8 und gibt eine Tabelle vom Typ integertab zurück, die die Primfaktoren der Eingabezahl enthält.

Die Methode beginnt mit der Initialisierung der beiden lokalen Variablen lv_remainder und lv_factor. lv_factor wird auf 2 und lv_remainder auf die Eingabezahl gesetzt.

Die Methode tritt dann in eine WHILE-Schleife ein, in der sie prüft, ob lv_factor kleiner oder gleich lv_remainder ist. Ist dies der Fall, prüft die Methode, ob lv_remainder durch lv_factor teilbar ist. Ist dies der Fall, wird der Wert von lv_factor an die Ergebnistabelle angehängt und lv_remainder durch lv_factor dividiert. Ist lv_remainder nicht durch lv_factor teilbar, wird lv_factor um 1 erhöht.

Dieser Prozess wird fortgesetzt, bis lv_factor nicht mehr kleiner oder gleich lv_remainder ist. An diesem Punkt gibt die Methode factors die Ergebnistabelle zurück, die die Primfaktoren der eingegebenen Zahl enthält.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar