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

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?
#5
vote_ok
von jigga (4260 Punkte) - 23.03.2017 um 13:06 Uhr
Quellcode ausblenden Python-Code
def kaprekar(d):
     
    d1 = d2 = 0
     
    while True:
        liste = []
 
        for i in range(len(str(d))):
            liste.append(d[i])

        if len(liste) == 3:
        	liste.append('0')
        	
        d1 = int(''.join(sorted(liste,reverse=True)))
        d2 = int(''.join(sorted(liste)))
 
        if (str(d1-d2) != (d)):
            d = str(d1-d2)
         
        else:
            print("Kaprekar-Konstante: ",d)
            break
 
while True:
    d = input("Vierstellige Zahl eingeben: ")
     
    if len(d) != 4:
        print("Nur vierstellige Zahlen!\n")
        continue
     
    if d == "1111" or d == "2222" or d == "3333" or d == "4444" or d == "5555"\
                   or d == "6666" or d == "7777" or d == "8888" or d == "9999":
        print("Keine Schnapszahlen!\n")
        continue
    else:
        kaprekar(d)
        break

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.