Primzahlen programmieren Thema ist als GELÖST markiert

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Primzahlen programmieren

Beitrag von Elcin (ForumUser / 9 / 3 / 0 ) »
Hallo Leute,

bin neu hier, falls ich das Thema im falschen Ordner geöffnet habe tut mir das leid.
Meine Aufgabe ist es,

Primzahlen von 1 bis 1000 durch Divisionsrest zu ermitteln mit der Verwendung von WHILE- als auch DO-Schleifen. Ich weiß nicht, wie ich das mit Algorithmen programmieren muss. :o :shock:

Lieben Dank!

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Primzahlen programmieren

Beitrag von Tron (Top Expert / 1327 / 35 / 333 ) »
Moin.
Hier schon mal die Literatur
https://de.wikipedia.org/wiki/Sieb_des_Eratosthenes
lg Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Primzahlen programmieren

Beitrag von PeterPaletti (Specialist / 381 / 37 / 104 ) »
Mit dem Sieb des Eratosthenes dürfte es folgendermaßen funktionieren

Code: Alles auswählen.

TYPES: BEGIN OF ty_zahl,
         zahl TYPE i,
       END OF ty_zahl,
       tt_zahl TYPE STANDARD TABLE OF ty_zahl.

DATA:  gt_zahl  TYPE tt_zahl,
       gs_zahl  TYPE ty_zahl,
       ergebnis TYPE i,
       multi    TYPE i,
       mal      TYPE i.


* Tabelle mit Zahlen von 1-1000 füllen
DO 1000 TIMES.
  gs_zahl-zahl = sy-index.
  APPEND gs_zahl TO gt_zahl.
ENDDO.

* Zahl 1 aus Tabelle löschen, weil keine Primzahl.
DELETE gt_zahl WHERE zahl = 1.

* mit Multiplikand 2 beginnen
multi = 2.
WHILE multi LT 32.  "32 ist die höchste Zahl
  mal = 1.
* Vielfache von Multiplikand errechnen und aus Tabelle löschen
  DO.
    mal = mal + 1.
    ergebnis = multi * mal.
    IF ergebnis GT 1000.
      EXIT.
    ENDIF.
    DELETE gt_zahl WHERE zahl = ergebnis.
  ENDDO.
  multi = multi + 1.
ENDWHILE.

* übrige Zahlen ausgeben
LOOP AT gt_zahl INTO gs_zahl.
  WRITE: gs_zahl-zahl.
ENDLOOP.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
Elcin


Re: Primzahlen programmieren

Beitrag von PeterPaletti (Specialist / 381 / 37 / 104 ) »
Mit Divisionsrest könnte es so klappen


DATA: primzahl TYPE i.
DATA: weniger TYPE i.
DATA: ergebnis TYPE p DECIMALS 2.
DATA: keine_primzahl TYPE xfeld.

Code: Alles auswählen.

DO 1000 TIMES.
  IF sy-index = 1.
    CONTINUE.
  ENDIF.
  primzahl = sy-index.
  weniger = primzahl - 1.
  CLEAR keine_primzahl.
  WHILE weniger GE 2.
    ergebnis = primzahl MOD weniger.
    IF ergebnis = 0.
      keine_primzahl = 'X'.
      EXIT.
    ENDIF.
    weniger = weniger - 1.
  ENDWHILE.
  IF keine_primzahl IS INITIAL.
    WRITE:  primzahl.
  ENDIF.
ENDDO.

Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
Elcin


Re: Primzahlen programmieren

Beitrag von Josalla (ForumUser / 4 / 0 / 0 ) »
Ich denke so wie es PeterPalletti erklärt müsste es mit dem Divisionsrest eigentlich klappen. Das wäre jetzt auch mein Vorschlag gewesen

Re: Primzahlen programmieren

Beitrag von PeterPaletti (Specialist / 381 / 37 / 104 ) »
Ja man könnte das jetzt noch optimieren, in dem man den Teiler für den Divisionsrest bei der Hälfte der möglichen Primzahl beginnen lässt.
Beispiel: wenn ich die Zahl 12 am Wickel habe, dann ist klar, dass sie erst bei der Hälfte, also 6, einen Divisionsrest von 0 ergeben kann. Die Teiler 7 bis 11 kann ich getrost weglassen.

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Feldroutine ADSO Transformation
vor einer Woche von codemaster1 2 / 74281
Stücklisten
vor einer Woche von Selma.schwarz 1 / 75774
Belege
vor einer Woche von Selma.schwarz 1 / 73700

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Vergleichbare Themen

Uhr programmieren
von donossi » 17.11.2011 11:50
Rekursives Programmieren
von SaskuAc » 03.08.2015 14:14
Baumstruktur programmieren
von ABAPlerv » 25.05.2024 10:27
Rechnungssplit Programmieren
von erzoo24 » 09.11.2016 11:18
Liste programmieren
von ostpower » 22.07.2011 14:34

Aktuelle Forenbeiträge

Feldroutine ADSO Transformation
vor einer Woche von codemaster1 2 / 74281
Stücklisten
vor einer Woche von Selma.schwarz 1 / 75774
Belege
vor einer Woche von Selma.schwarz 1 / 73700

Unbeantwortete Forenbeiträge

Stücklisten
vor einer Woche von Selma.schwarz 1 / 75774
Belege
vor einer Woche von Selma.schwarz 1 / 73700