1 Das Freudenthal-Rätsel Das Freudenthal-Rätsel Dieses Rätsel wurde 1969 von Hans Freudenthal vorgestellt. Später entstanden zahlreiche Variationen. Es wurden zwei natürliche Zahlen größer als 1 und kleiner als 100 ausgewählt. Dem Mathematiker Paul wird nur das Produkt dieser beiden Zahlen mitgeteilt, einem anderen Mathematiker namens Sam wird nur die Summe verraten. Weitere Informationen erhalten die beiden nicht. Paul und Sam sind in telephonischem Kontakt. Paul: „Ich habe keine Ahnung, was deine Summe ist.” Sam: „Das ist mir bereits klar.” Paul: „Jetzt kenne ich die beiden Zahlen.” Sam: „Jetzt kenne ich sie auch.” Wie lauten die beiden Zahlen? Das Schöne an diesem Rätsel ist, dass man offenbar gar keine verwertbaren Angaben besitzt. Zwei Zahlen 2 ≤ a,b ≤ 100 sind gesucht, die beiden Mathematiker behaupten anfangs, dass sie keine Ahnung hätten, wie die Lösung aussieht und plötzlich kennen sie sie. Ein echtes Meta-Rätsel. Die exakte Lösung ist schwierig und benötigt neben mathematischen Wissen um die natürlichen Zahlen viel 'Ausprobieren'. Den Lösungsweg verrate ich Dir aber gerne. Welche Informationen besitzen wir und was bedeuten sie Paul: „Ich habe keine Ahnung, was die Summe sein könnte.” Drehen wir es um – wann hätte Paul, der nur das Produkt der Zahlen kennt, eine Ahnung? Wann könnte er aus dem Produkt die beiden Zahlen finden? Angenommen, das Produkt wäre 6. Wenn er diese Zahl in ihre Primfaktoren zerlegt, erhält er (Eins ist ausgeschlossen) 6 = 2∙3. Dann müssten die gesuchten Zahlen 2 und 3 lauten und die Summe wäre 5. Oder das Produkt ist 15. Dann müssen die Zahlen wegen 15 = 3∙5 auf jeden Fall 3 und 5 sein. Wäre andererseits das Produkt 12 = 2∙2∙3, so könnten die Zahlen 2 und 6 mit Summe 8, oder aber 3 und 4 mit Summe 7 lauten. Die Aufteilung wäre nicht eindeutig, da mehr als zwei Primfaktoren auftreten und mehrere Kombinationen gebildet werden können. Paul kann nach seiner Aussage das Produkt nicht eindeutig zerlegen, das bedeutet Beobachtung 1 : Das Produkt kann nicht das Produkt zweier Primzahlen sein. Wann wäre die Aufteilung bei mehr als zwei Faktoren trotzdem klar? Wenn wir drei Faktoren haben, diese aber alle gleich sind. Mit dem Produkt 27 = 3∙3∙3 wüssten wir sofort, dass die beiden gesuchten Faktoren 3 und 9 lauten müssen. Dieser Fall kann also ebenfalls nicht vorliegen Beobachtung 2 : Das Produkt kann nicht das die dritte Potenz einer Primzahl sein. HIB Wien [email protected] 09/2012 2 Das Freudenthal-Rätsel Sam: „Das ist mir bereits klar.” Wieso kann das für Sam, der nur die Summe kennt, schon im Voraus klar gewesen sein? Er muss erkannt haben, dass seine Summe nicht so in zwei Zahlen aufgeteilt werden kann, dass Paul auch nur irgendeine Chance gehabt hätte, eine eindeutige Zerlegung zu finden. Lautete die Summe etwa 5, so könnte die Lösung 2 und 3 lauten und Paul hätte eine Chance, die Faktoren zu finden (siehe obige Beobachtungen). Mit 28 = 5+23 könnte Paul das Produkt 115 = 5∙23 haben. Beobachtung 3 : Die Summe kann nicht Summe zweier Primzahlen sein. Welche Zahlen könnten Summe zweier Primzahlen sein? Erstens jede Zahl der Form p+2, wenn p eine Primzahl ist Zweitens jede gerade Zahl (Goldbachsche Vermutung: jede gerade Zahl lässt sich als Summe zweier Primzahlen anschreiben) Wir können eine Liste erstellen, die alle möglichen Summen enthält, die den Beobachtungen 1, 2 und 3 entspricht (SumList1). Paul: „Jetzt kenne ich die beiden Zahlen.” Es gibt für einige dieser möglichen Summen nur eine einzige Faktorisierung. Davon erstellen wir eine Liste (SumList2) Sam: „Jetzt kenne ich sie auch.” In dieser zweiten Liste gibt es ein Zahlenpaar, dessen Summe und sein entsprechendes Produkt nur ein einziges Mal auftreten. Dieses ist die Lösung. Ich verrate Dir hier die Lösung: Die Zahlen lauten 4 und 13. HIB Wien [email protected] 09/2012 3 Das Freudenthal-Rätsel Wie hat es sich abgespielt? Paul hat das Produkt 4∙13 = 52 mitgeteilt bekommen, Sam kennt die Summe 17. Paul zerlegt 52 in die Primfaktoren 52 = 2∙2∙13 und muss feststellen, dass es zwei Lösungsmöglichkeiten gibt, nämlich 4 und 13 mit der Summe 17, sowie 2 und 26 mit der Summe 28. Er kann nicht wissen, welche dieser Möglichkeiten die gesuchte ist und informiert Sam. Paul: „Ich habe keine Ahnung, was die Summe sein könnte.” Sam war nicht untätig und hat schon vor dem Telefonat seine Summe 17 untersucht. Er überlegt sich, welche Zahlen diese Summe ergeben können und welches Produkt Paul haben müsste. 17 = Produkt Mögliche Faktoren 2+15 2∙15 = 30 2∙16, 3∙10, 5∙6 3+14 3∙14 = 42 2∙21, 3∙14, 6∙7 4+13 4∙13 = 52 2∙26, 4∙13 5+12 5∙12 = 60 2∙30, 3∙20, 4∙15, 5∙12, 6∙10 6+11 6∙11 = 66 2∙33, 3∙22, 6∙11 7+10 7∙10 = 70 2∙35, 5∙14, 7∙10 8+9 8∙19 = 72 2∙36, 3∙24, 4∙18, 6∙12, 8∙9 Wäre in einer der Zeilen nur eine einzige Zerlegung möglich, dann hätte Paul eine Chance gehabt, seine Summe zu erraten. Da aber in jedem Fall mindestens zwei Faktorisierungen möglich sind, hat Paul keine Chance. Deshalb ist die Antwort Sam: „Das ist mir klar.” Nun kommt Paul ins Grübeln. Warum war es Sam schon von vorne herein klar, dass er (Paul) keine Chance hatte? Paul weiß, dass die Summe nur 17 oder 28 sein kann. Er überlegt wie Sam, nur muss er zwei Möglichkeiten berücksichtigen. Auußer obiger Liste muss er, das auch die Alternative 28 offen steht, auch 28 zerlegen: Ich zeige hier nur den Ausschnitt, auf den es ankommt: 28 = Produkt Mögliche Faktoren ... ... ... 4+24 4∙24 = 96 2∙48, 3∙32, 4∙24, 6∙16, 8∙12 5+23 5∙23 = 115 5∙23 6+22 6∙22 = 132 2∙66, 3∙44, 4∙33, 6∙22, 11∙12 ... ... ... Hätte Sam die Summe 28, so hätte er gesehen, dass das Zahlenpaar 5 und 23 zu seiner Summe passt. Falls Paul das Produkt 115 gehabt hätte, dann hätte Paul eine Chance gehabt, eine eindeutige Zerlegung zu finden. Aber weil Sam ja schon im Voraus gewusst hat, dass keine eindeutige Zerlegung auftritt, kann es nicht die Summe 28 gewesen sein. HIB Wien [email protected] 09/2012 4 Das Freudenthal-Rätsel Paul weiß, dass 4 und 13 die Lösung ist. Paul: „Jetzt kenne ich die beiden Zahlen.” Nun rätselt Sam – warum hat Paul nun die Lösung erhalten? Ihm fällt in seiner Liste (Zerlegung der Summe 17) auf, dass die Zerlegung in 4+13 nur zwei Alternativen bietet. Er erkennt, dass Paul das Produkt 52 haben muss, also auf 4∙13 oder auf 2∙26 gekommen ist. Nun kann auch er die zweite Liste (für die Summe 28) aufschreiben und folgert genauso wie Paul. Sam: „Jetzt kenne ich sie auch.” Anmerkung Es gibt zahlreiche Variationen des Rätsels. So kann man die erlaubte Obergrenze für die beiden Zahlen nach oben setzen. Man kann den Text der Aufgabe ändern – indem etwa Sam zuerst anruft, oder der Wortlaut leicht veränder wird. HIB Wien [email protected] 09/2012 5 Das Freudenthal-Rätsel # -*- coding: iso-8859-15 -*# Löse das Freudenthal-Rätsel mit 2<=x<=y<limit ############################################### limit=869 # (870 hat bereits 2 Lösungen) ## simuliere ein 2D-Array. Einträge gleich Null werden nicht angelegt. ## falls ein Schlüssel nicht existiert, ist sein Wert Null. def erhoeheWert(eintrag,verzeichnis): if eintrag in verzeichnis: verzeichnis[eintrag] +=1 else: verzeichnis[eintrag]=1 def wert(eintrag,verzeichnis): if eintrag in verzeichnis: return verzeichnis[eintrag] else: return 0 # vorerst alle Produkte von Werten x,y mit 2<=x<=y<limit erzeugen alleProdukte={} for x in range(2,limit): for y in range(x,limit-x): erhoeheWert(x*y,alleProdukte) # alle Summen, die eine eindeutige Faktorisierung ergeben können, sind unmöglich unmoeglicheSummen={} for x in range(2,limit): for y in range(x,limit-x): if alleProdukte[x*y]==1 : # nur eine Faktorisierung unmoeglicheSummen[x+y]=1 # nicht möglich # nur die Produkte sind möglich, die *keine* unmögliche Summe haben moeglicheProdukte={} for summe in range(2,limit): if summe not in unmoeglicheSummen: for x in range(2,summe/2+1): y = summe-x produkt = x*y if wert(produkt,alleProdukte) > 1: # auf mehrere Arten erhoeheWert(produkt,moeglicheProdukte) # nur die Summen, die jetzt noch eine eindeutige Zerlegung erlauben, sind möglich moeglicheSummen={} for summe in range(2,limit): if summe not in unmoeglicheSummen: for x in range(2,summe/2+1): y = summe-x produkt = x*y if wert(produkt,moeglicheProdukte) == 1: # nur auf eine Art erhoeheWert(summe,moeglicheSummen) # mögliche Summen suchen, zu denen nur ein einziges Produkt gehört for summe in moeglicheSummen: if moeglicheSummen[summe] == 1: for x in range(2,summe/2+1): y = summe-x produkt = x*y if wert(produkt,moeglicheProdukte) == 1: print '(x,y)= (%d , %d), (S,P) = (%d , %d), ' % (x,y,summe,produkt) HIB Wien [email protected] 09/2012