Python :: Aufgabe #145 :: Lösung #6
5 Lösungen

#145
Existiert die Kaprekar-Konstante?
Anfänger - Python
von hollst
- 23.02.2017 um 13:29 Uhr
Man weise numerisch nach, ob die Behauptung des indischen Mathematikers Kaprekar richtig ist.
Kaprekar hat folgendes behauptet (1949):
1.) Man nehme eine vierstellige Dezimalzahl D, wobei nicht alle vier Stellen identisch sein dürfen
(also 1111, 2222 etc. sind nicht erlaubt, aber z. B. 0001 ist erlaubt).
2.) D überführe man in zwei Zahle D1 und D2, indem bei D1 die Digits in absteigender und bei D2 in aufsteigender Reihenfolge
angeordnet werden (also z. B. D = 1724 -> D1 = 7421 und D2 = 1247; oder D = 1 -> D1 = 1000 und D2 = 1).
3.) Man subtrahiere nun D2 von D1; mit dem Ergebnis (Dneu = D1 - D2) wiederhole man Pkt. 2 durch Ersetzen von D durch Dneu solange,
bis sich nichts mehr ändert.
Die unglaubliche Behauptung ist, dass bei diesem Algorithmus stets das gleiche Ergebnis herauskommt (die sogenannte Kaprekar-Konstante),
egal, mit welchem D man beginnt.
Frage: Wie lautet die Kaprekar-Konstante?
Kaprekar hat folgendes behauptet (1949):
1.) Man nehme eine vierstellige Dezimalzahl D, wobei nicht alle vier Stellen identisch sein dürfen
(also 1111, 2222 etc. sind nicht erlaubt, aber z. B. 0001 ist erlaubt).
2.) D überführe man in zwei Zahle D1 und D2, indem bei D1 die Digits in absteigender und bei D2 in aufsteigender Reihenfolge
angeordnet werden (also z. B. D = 1724 -> D1 = 7421 und D2 = 1247; oder D = 1 -> D1 = 1000 und D2 = 1).
3.) Man subtrahiere nun D2 von D1; mit dem Ergebnis (Dneu = D1 - D2) wiederhole man Pkt. 2 durch Ersetzen von D durch Dneu solange,
bis sich nichts mehr ändert.
Die unglaubliche Behauptung ist, dass bei diesem Algorithmus stets das gleiche Ergebnis herauskommt (die sogenannte Kaprekar-Konstante),
egal, mit welchem D man beginnt.
Frage: Wie lautet die Kaprekar-Konstante?
#6

von satn1241 (3090 Punkte)
- 03.04.2020 um 13:22 Uhr

#Kaprekar #Eingabe und Überprüfung zahl_eingabe = int(input("Gib bitte eine 4-stellige Zahl ein. Die Ziffern dürfen nicht gleich sein:" )) while 0 > zahl_eingabe or zahl_eingabe%1111 == 0 or zahl_eingabe >=10000: zahl_eingabe = int(input("Die Zahl entsprach nicht den Vorgaben, bitte wiederholen")) #Ausführung def kaprekar(zahl): zahl = str(zahl).zfill(4) #print(zahl) ziffern = [] for zif in zahl: ziffern.append(zif) ziffern.sort() zahl1 = "" zahl2 = "" for i in range(0,4): zahl2 = ziffern[i] + zahl2 zahl1 = zahl1 + ziffern[i] neue_zahl = (int(zahl2)-int(zahl1)) return(neue_zahl) zahl = kaprekar(zahl_eingabe) print(zahl) # Schleife bis zur Konstanten while True: if zahl == kaprekar(zahl): break print(kaprekar(zahl)) zahl = kaprekar(zahl)
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1