Python :: Aufgabe #314
5 Lösungen

Iteriertes Querprodukt
Anfänger - Python
von JKooP
- 24.01.2021 um 16:44 Uhr
Das Querprodukt einer Zahl ähnelt der Berechnung der Quersumme,
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.
3784 => 3 * 7 * 8 * 4 = 672
Nun soll aus dem Ergebnis wiederum das Querprodukt berechnet werden.
672 => 6 * 7 * 2 = 84
Und immer so weiter, bis nur noch eine Ziffer übrigbleibt.
84 => 8 * 4 = 32
32 => 3 * 2 = 6
Die Ziffer, die am Ende übrigbleibt, nennt man „multiplikative Ziffernwurzel“.
Die Anzahl der Schritte (Iterationen) wird als "Beharrlichkeit" bezeichnet.
Schreibe ein Programm, mit dem es möglich ist, sowohl die Beharrlichkeit als auch die multiplikative Ziffernwurzel einer beliebigen Integer- Zahl auszugeben.
Eine ausführliche Beschreibung findet man hier.
Viel Spaß
nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden.
3784 => 3 * 7 * 8 * 4 = 672
Nun soll aus dem Ergebnis wiederum das Querprodukt berechnet werden.
672 => 6 * 7 * 2 = 84
Und immer so weiter, bis nur noch eine Ziffer übrigbleibt.
84 => 8 * 4 = 32
32 => 3 * 2 = 6
Die Ziffer, die am Ende übrigbleibt, nennt man „multiplikative Ziffernwurzel“.
Die Anzahl der Schritte (Iterationen) wird als "Beharrlichkeit" bezeichnet.
Schreibe ein Programm, mit dem es möglich ist, sowohl die Beharrlichkeit als auch die multiplikative Ziffernwurzel einer beliebigen Integer- Zahl auszugeben.
Eine ausführliche Beschreibung findet man hier.
Viel Spaß
Lösungen:

""" # 314: Iteriertes Querprodukt Das Querprodukt einer Zahl ähnelt der Berechnung der Quersumme, nur dass die Ziffern nicht addiert, sondern miteinander multipliziert werden. """ erfolg = False beharr = 1 summe = 0 zahl = input("Für Welche Zahl soll ein Iteriertes Querproduktinput gerechnet werden? ") try: int(zahl) except ValueError: print("Bitte Ganzzahl eingeben") while not erfolg: liste = [] summe = 1 for zeichen in str(zahl): liste.append(int(zeichen)) for i in range(0, len(liste)): summe *= liste[i] if summe > 9: zahl = summe beharr += 1 erfolg = False # print(zahl) else: erfolg = True print("Die multiplikative Ziffernwurzel lautet:", summe) print("Die Beharrlichkeit betraegt:", beharr)

def iter_quer(num: int): def _iter_quer(__num: int, __behar: int = 0): if len(str(__num)) == 1: print(f"Von {num} ist die multiplikative Ziffernwurzel: {__num}\n" f"Bei einer Beharrlichkeit von: {__behar}") return res = 1 res = [res := res * int(char) for char in str(__num)][-1] return _iter_quer(res, __behar + 1) return _iter_quer(num)
Output für Beispiel von oben.
Von 3784 ist die multiplikative Ziffernwurzel: 6
Bei einer Beharrlichkeit von: 4

#Querprodukt zahl = 3784 liste = [] n_zahl = 1 counter = 0 for x in str(zahl): liste.append(int(x)) while len(liste) > 1: for x in liste: n_zahl *= x liste.clear() for x in str(n_zahl): liste.append(int(x)) n_zahl = 1 counter += 1 print('multiplikative Ziffernwurzel:', liste[0], '\nBeharrlichkeit:', counter)

zahl = 3784 beharrlichkeit = 0 def quersumme(number): number = str(number) product: int = 1 for e in number: product *= int(e) return product while zahl > 9: beharrlichkeit += 1 zahl = quersumme(zahl) print("Die multiplikative Ziffernwurzel ist:", zahl) print("Die Beharrlichkeit ist:", beharrlichkeit)

zahl = str(input('Integrzahl: ')) #3784 n = 0 def querprodukt(zahl): print(zahl, end = ' => ') global n p = 1 for i in zahl: p *= int(i) zahl = str(p) if len(zahl) > 1: n += 1 querprodukt(zahl) else: n += 1 print(zahl, '\n\nMultiplikative Ziffernwurzel =', zahl, '\nBeharrlichkeit (Schritte) =', n) querprodukt(zahl)