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

5 Lösungen Lösungen öffentlich
#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?
#6
vote_ok
von satn1241 (3090 Punkte) - 03.04.2020 um 13:22 Uhr
Quellcode ausblenden Python-Code
#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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben