• Die berühmten Mathematiker Carl Friedrich Gauß und Leonhard Euler landen nach ihrem Tod in der Hölle. Luzifer verspricht ihnen die Freiheit, wenn sie ihm die beiden ganzen Zahlen (größer als 1 und kleiner als 100) sagen, die er sich ausgedacht hat. Er nennt Gauß das Produkt und Euler die Summe der beiden Zahlen; daraufhin entwickelt sich zwischen den Mathematikern der folgende Dialog:

    Gauß: „Ich kenne die beiden Zahlen nicht.“

    Euler: „Das war mir klar.“

    Gauß: „Jetzt kenne ich die beiden Zahlen.“

    Euler: „Dann kenne ich sie jetzt auch.“

    Wie lauten die beiden Zahlen?

    Dieses Rätsel stammt von Hans Freudenthal.

  • Ich habe momentan keine Zeit, mich dem Rätsel ausführlich zu widmen...

    Spoiler anzeigen

    Aber klar ist, dass nach Aussage 1 es ausgeschlossen ist, dass beide Zahlen Primzahlen sind, sonst wäre ihr Produkt eindeutig.
    Aussage 2 bedeutet, dass die Summe der beiden Zahlen nicht der Summe zweier Primzahlen entspricht.
    Nun muss man eine Liste der Zahlen 2 bis 99 anfertigen und jene Zahlen durchstreichen, die ausgeschlossen sind.

  • Ich habe momentan keine Zeit, mich dem Rätsel ausführlich zu widmen...

    Spoiler anzeigen

    Aber klar ist, dass nach Aussage 1 es ausgeschlossen ist, dass beide Zahlen Primzahlen sind, sonst wäre ihr Produkt eindeutig.
    Aussage 2 bedeutet, dass die Summe der beiden Zahlen nicht der Summe zweier Primzahlen entspricht.
    Nun muss man eine Liste der Zahlen 2 bis 99 anfertigen und jene Zahlen durchstreichen, die ausgeschlossen sind.

    Das ist schon mal ein guter Anfang.

    Ein Tipp:

    Spoiler anzeigen

    Christian Goldbach

  • Ich hab das ganze Mal informatisch-unmathematisch gelöst. Im folgenden zwei Spoiler:

    • Zuerst die 15 Zeilen Ruby-Code, die die Lösung generieren (die beiden verwendeten Hashes sind nur Buffer um die Berechnung zu beschleunigen)
    • Danach das gleiche nur kommentiert


    Ich möchte explizit die Lösung selbst hier nicht angeben (die sieht man ohnehin, wenn man den Code ausführt), da die Spoilergefahr trotz Spoiler-Tags relativ hoch ist und ich das Rätsel zu schön finde, um jemandem gleich die Lösung zu spoilern.

    Unkommentierter Code der die Lösung ausgibt

    Spoiler anzeigen


    combinations = (2..99).to_a.repeated_combination(2)


    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }
    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }
    combinations = combinations.select { |a,b| multiplications[a*b].size > 1}.select {|a,b|
    additions[a+b].all? {|c,d| multiplications[c*d].size > 1}
    }


    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }
    combinations = combinations.select {|a,b| multiplications[a*b].size == 1 }


    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }
    combinations = combinations.select {|a,b| additions[a+b].size == 1}


    p combinations

    Kommentierter Code der die Lösung ausgibt:

    Spoiler anzeigen


    combinations = (2..99).to_a.repeated_combination(2)


    # Generiere Buffer-Hashes, um die Berechnung zu beschleunigen
    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }
    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }


    combinations = combinations.select { |a,b|
    # Gauss geht von allen möglichen Kombinationen aus, die
    # das Produkt seiner Zahl ergeben könnten und sagt, dass
    # er die Zahl nicht kenne --> Es muss mehrere
    # Zahlen geben, die zum gleichen Produkt führen, sonst
    # könnte er bereits jetzt die Zahlen eindeutig bestimmen
    multiplications[a*b].size > 1
    }.select {|a,b|
    # Euler meinte, dass er schon vor der Aussage von Gauss
    # gewusst habe, dass dieser die Antwort nicht kennen kann.
    # --> Jede mögliche Kombination der beiden Zahlen die die
    # ihm bekannte Summe ergibt, hat ein zugehöriges Produkt, aus
    # dem die Zahlen nicht eindeutig geschlossen werden können
    # (siehe vorherigen Punkt)
    additions[a+b].all? {|c,d| multiplications[c*d].size > 1}
    }


    # Die kommende Aussage von Gauss bezieht sich auf den Informationsstand nach der
    # Aussage von Euler, die die möglichen Kombinationen wesentlich einschränkt.
    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }


    combinations = combinations.select {|a,b|
    # Gauss kennt jetzt eine eindeutige Lösung --> Für das Produkt, das Gauss kennt
    # gibt es also nach der Information von Gauss nur noch eine einzige Kombination
    # mit diesem Produkt
    multiplications[a*b].size == 1
    }


    # Die kommende Aussage von Euler bezieht sich auf den Informationsstand nach
    # Gauss' voriger Aussage.
    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }


    combinations = combinations.select {|a,b|
    # Euler kann jetzt ebenfalls eine eindeutige Lösung bestimmen.
    additions[a+b].size == 1
    }


    p combinations

  • Und weil mir etwas langweilig war, noch eine weitere Codevariante:

    Spoiler anzeigen


    additions = Hash.new { |h, k| h[k] = [] }
    multiplications = Hash.new { |h, k| h[k] = [] }


    (2..99).to_a.repeated_combination(2).each do |a,b|
    combo = {a: a, b: b, active: true}
    additions[a+b] << combo
    multiplications[a * b] << combo
    end


    multiplications.each { |_, combos|
    combos.each {|c| c[:active] = false } unless combos.size > 1
    }
    additions.each {|sum, combos|
    combos.each {|c| c[:active] = false } unless combos.all? {|c| multiplications[c[:a] * c[:b]].size > 1 }
    }
    multiplications.each {|product, combos|
    combos.each {|c| c[:active] = false } unless combos.select {|c| c[:active]}.size == 1
    }
    additions.each {
    |sum, combos| combos.each {|c| c[:active] = false } unless combos.select {|c| c[:active]}.size == 1
    }


    p additions.values.flatten.select {|c| c[:active] }

  • Das ist schon mal ein guter Anfang.

    Ein Tipp:

    Spoiler anzeigen

    Christian Goldbach


    Danke für den Tipp.

    Spoiler anzeigen

    "Jede gerade Zahl, die größer als 2 ist, ist Summe zweier Primzahlen." So lautet die Goldbachsche Vermutung. Somit können wir schon alle gerade Zahlen als mögliche Summen ausschließen.

  • Spoiler anzeigen

    Gauß weiß nach Eulers Aussage also: Die Summe ist ungerade.
    Da er nun die Zahlen kennt, muss sich das Produkt auf verschiedene Arten zerlegen lassen, aber nur eine Art ergibt eine ungerade Summe.
    Eine Summe ist nur dann ungerade, wenn ein Summand gerade ist und der andere ungerade.
    Das bedeutet, dass das Produkt gerade ist.
    Ferner bedeutet es, dass jede Zerlegung des Produkts in zwei Zahlen zu zwei geraden Zahlen führen würde, außer einer bestimmten Zerlegung.
    Somit muss eine der beiden Zahlen entweder 2 sein und die andere Zahl eine ungerade Zahl.
    In diesem Fall muss die ungerade Zahl muss zumindest das Produkt zweier ungerader Primzahlen sein. Es kann sich aber auch um eine Quadratzahl handeln.
    Es kann aber auch eine der beiden Zahlen eine Zweierpotenz sein und die andere Zahl eine Primzahl.

    Weiter weiß ich momentan nicht.

  • Hier ist ein anderes, einfacheres Rätsel. Vielleicht kennt ihr es schon, denn es war vor zwei Jahren in den Medien.

    Albert and Bernard have just become friends with Cheryl, and they want to know when her birthday is. Cheryl gives them a list of 10 possible dates:

    [TABLE='class: grid, width: 200, align: left']

    [tr][td]

    May

    [/td][td][/td][td]

    15

    [/td][td]

    16

    [/td][td][/td][td][/td][td]

    19

    [/td][/tr][tr][td]

    June

    [/td][td][/td][td][/td][td][/td][td]

    17

    [/td][td]

    18

    [/td][td][/td][/tr][tr][td]

    July

    [/td][td]

    14

    [/td][td][/td][td]

    16

    [/td][td][/td][td][/td][td][/td][/tr][tr][td]

    August

    [/td][td]

    14

    [/td][td]

    15

    [/td][td][/td][td]

    17

    [/td][td][/td][td][/td][/tr]


    [/TABLE]


    Cheryl then separately tells Albert the month and Bernard the day of her birthday.

    Albert: I don't know when Cheryl's birthday is, but I know that Bernard doesn't know either.

    Bernard: At first I didn't know when Cheryl's birthday is, but I know now.

    Albert: Then I also know when Cheryl's birthday is.

    So when is Cheryl's birthday?

  • Ich kannte es noch nicht, aber das Prinzip der Hinweise ist ähnlich, aber sehr viel leichter zu "berechnen". Find ich cool! :D
    Meine Lösung:

    Spoiler anzeigen


    16. Juli


    Weg: Albert kann vom Monat unmöglich auf den Tag kommen, aber mit seiner Aussage, dass er sicher ist,
    dass Bernhard es auch nicht weiß, schließt er Mai und Juni aus (der 18. und 19. kommen jeweils nur einmal vor.
    Bleiben Juli und August. Bernhard sagt nun, dass er das Datum jetzt kenne, was wiederum den 14. ausschließt
    (den gibt es sowohl im Juli wie auch August). Es bleiben 15. und 17. August sowie 16. Juli. Nachdem Albert jetzt
    aber das Datum auch weiß, muss Cheryl ihm den Juli genannt haben (da im August noch zwei Tage zur Auswahl
    stünden). Es bleibt der 16. Juli übrig.

  • Spoiler anzeigen

    Nur wenn der Geburtsmonat Mai oder Juni wäre, könnte Bernard das Geburtsdatum kennen,
    weil nur in diesen beiden Monaten Tage vorkommen, die in jeweils keinem anderen Monat vorkommen.

    Also ist der Geburtsmonat Juli oder August.

    Da Bernard nun die Lösung kennt, kann es sich nicht um den 14. handeln.

    Wenn dieses Wissen dazu führt, dass auch Albert nun die Lösung kennt, kann es sich nur um den 16. Juli handeln,
    denn wenn es ein Tag im August wäre, wäre die Lösung nicht eindeutig.

  • Ich bin jetzt darauf gekommen, dass ich das ursprüngliche Rätsel (Posting #1) schon einmal gelöst habe. Ich habe am 15. März 2005 darüber in meinem Blog geschrieben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!