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