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.
3205
Views
Uhr programmieren
von donossi » 17.11.2011 11:50 • Verfasst in ABAP® für Anfänger
1
Antw.
342
Views
SAP Module programmieren
von BecomingAnAbapGuru » 08.06.2021 04:41 • Verfasst in ABAP® für Anfänger
3
Antw.
439
Views
Belegwährung programmieren
von L0w-RiDer » 28.05.2020 11:38 • Verfasst in ABAP® für Anfänger
1
Antw.
5441
Views
Rechnungssplit Programmieren
von erzoo24 » 09.11.2016 11:18 • Verfasst in ABAP® für Anfänger
1
Antw.
5291
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

Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 20 / 2464
Zeilenumbrüche ersetzen
vor 23 Stunden von ralf.wenzel 6 / 236
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1606

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

Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 20 / 2464
Zeilenumbrüche ersetzen
vor 23 Stunden von ralf.wenzel 6 / 236
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1606

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 670
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2299
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8883