• Lernkarte - Primfaktorzerlegung (Python)
  • Christian Leeser
  • 12.07.2023
  • Informatik
  • 9, 10
Um die Lizenzinformationen zu sehen, klicken Sie bitte den gewünschten Inhalt an.
Pro­gramm­be­schrei­bung und
Fluss­dia­gramm
Hin­weis

Die­ses Pro­gramm zer­legt eine Zahl in ihre Prim­fak­to­ren. Hier­zu wird die Be­rech­nung mit Mo­du­lo (Rest­wert) ver­wen­det.

Die Um­set­zung des Pro­gramm ver­wen­det:

- if-​Abfrage

- while-​Schleife

- Va­ri­a­blen

- Mo­du­lo

Schritt-​für-Schritt-Anleitung

In dem fol­gen­den Teil führt Schritt-​für-Schritt durch das Fluss­dia­gramm.



Am Ende die­ser An­lei­tung steht das voll­stän­di­ge Pro­gramm pas­send zum Fluss­dia­gramm.

1. Schritt: Die Ein­ga­be (Zeile 1 und 2)

Die Va­ri­a­ble n wird de­kla­riert. input for­dert den Nut­zer auf, zu die­ser Va­ri­a­blen einen Werte an­zu­ge­ben. int() wan­delt den Typ in in­te­ger um, da die Ein­ga­be als String aus­ge­ge­ben wird.

Python
n = int(input('Gebe eine Zahl an: '))

2. Schritt: Die while-​Schleife (Zeile 3)

So­bald n gleich 1 ist, wer­den die Ab­fra­gen nicht mehr durch­lau­fen. (oder an­ders for­mu­liert)

So­lan­ge n nicht gleich 1 ist, wer­den die Ab­fra­gen durch­lau­fen.



Hin­ter­grund: Von 1 lässt sich keine Prim­fak­tor­zer­le­gung durch­füh­ren.

Python
n = int(input('Gebe eine Zahl an: '))
while n != 1:

3. Schritt: Die Ab­zwei­gung (Zeile 4 bis 6)

Wenn n Mo­du­lo 2 gleich null ist, also n/2 ohne Rest, dann soll 2 aus­ge­ge­ben und n durch 2 ge­teilt wer­den. Hin­weis: Un­ter­schei­dung zum Fluss­dia­gramm.

Python
n = int(input('Gebe eine Zahl an: '))
while n != 1:
if n % 2 == 0:
print("2")
n = n / 2

4. Schritt: Die erste Ab­zwei­gung (Zeile 7 bis 26)

Der Schritt 3 wird für die Prim­zah­len 3, 5, 7, 11, 13 und 17 eben­falls durch­ge­führt. Nach jeder Aus­ga­be und Be­rech­nung geht es zu­rück zur while-​Schleife, bis n = 1 ist.

Python
n = int(input('Gebe eine Zahl an: '))
while n != 1:
if n % 2 == 0:
print("2")
n = n / 2
elif n % 3 == 0:
print("3")
n = n / 3
elif n % 5 == 0:
print("5")
n = n / 5
elif n % 7 == 0:
print("7")
n = n / 7
elif n % 11 == 0:
print("11")
n = n / 11
elif n % 13 == 0:
print("13")
n = n / 13
elif n % 17 == 0:
print("17")
n = n / 17

ENDE

Auf­ga­ben
1
Baue das Pro­gramm mit Hilfe der Schritt-​für-Schritt-Anleitung nach.
Füge in dem Quell­code pas­send zu den Schrit­ten Kom­men­ta­re ein, die den je­wei­li­gen Teil in sei­ner Funk­ti­on be­schrei­ben.
Python
# Ein "Hashtag" ergibt einen Zeilenkommentar
"""Drei Anführungszeichen am Anfang und Ende ergeben
einen Kommentar auf mehreren Zeilen"""
2
Ei­ni­ge Fra­gen, um das Ver­ständ­nis zum Pro­gramm zu über­prü­fen.
  • Die va­ri­a­ble n be­ginnt mit dem Wert, den der User ein­trägt. Was pas­siert im Laufe des Pro­gram­mes mit die­sem Wert?
  • Die­ses Pro­gramm hat Gren­zen in der Zer­le­gung in Prim­zah­len. Im Grun­de stellt die­ses Pro­gramm kei­nen voll­stän­di­gen Al­go­rith­mus dar. Be­grün­de, warum dies spe­zi­ell bei Prim­fak­tor­zer­le­gung dies so ist.
3
Über­le­ge Dir mög­li­che Ver­bes­se­run­gen für das Pro­gramm. Bei­spiels­wei­se:
  • Könn­te der Text der Ein­ga­be und der Aus­ga­be ver­bes­sert wer­den.
  • Be­steht die Mög­lich­keit, eine an­de­re Be­rech­nung zu ver­wen­den.
  • Wird am Ende eine Else-​If-Anweisung be­nö­tigt?
4
Passe das Fluss­dia­gramm und den Quell­text ent­spre­chend Dei­ner Über­le­gun­gen aus Auf­ga­be 3 an.
x