Primzahlen programmieren

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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 / 332 ) »
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 / 348 / 32 / 97 ) »
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 / 348 / 32 / 97 ) »
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 / 348 / 32 / 97 ) »
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

Vergleichbare Themen

4
Antw.
3214
Views
Uhr programmieren
von donossi » 17.11.2011 11:50 • Verfasst in ABAP® für Anfänger
1
Antw.
343
Views
SAP Module programmieren
von BecomingAnAbapGuru » 08.06.2021 04:41 • Verfasst in ABAP® für Anfänger
3
Antw.
443
Views
Belegwährung programmieren
von L0w-RiDer » 28.05.2020 11:38 • Verfasst in ABAP® für Anfänger
1
Antw.
5462
Views
Rechnungssplit Programmieren
von erzoo24 » 09.11.2016 11:18 • Verfasst in ABAP® für Anfänger
1
Antw.
5300
Views
Rekursives Programmieren
von SaskuAc » 03.08.2015 14:14 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 48 Minuten von ralf.wenzel 21 / 11223
Dialog-Container mit Toolbar/Status
vor 22 Stunden von black_adept gelöst 27 / 4327
IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 218

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.

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 48 Minuten von ralf.wenzel 21 / 11223
Dialog-Container mit Toolbar/Status
vor 22 Stunden von black_adept gelöst 27 / 4327
IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 218

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
Gestern von ArjenR 1 / 218
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3149
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9743