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

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?
#1
2 Kommentare
vote_ok
von jigga (4260 Punkte) - 25.02.2017 um 10:39 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])

		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:

Nachbar

Punkte: 2820

30 Aufgaben
67 Lösungen
44 Kommentare

#1
22.03.2017 um 18:38 Uhr
Hi,

das ist es noch nicht ganz. Probiere es z. B. mal mit der 4-stelligen Zahl: 2111.

Grüße vom
nachbar
post_arrow
430 0

jigga

Punkte: 4260


73 Lösungen
7 Kommentare

#2
23.03.2017 um 13:05 Uhr
Sorry, hab eine Zeile auskommentiert und die dann vergessen :|
post_arrow
432 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben