Hallo Gunnar,
Beweisen, dass das Script das tut, was es soll, also dass es alle 7er-Ketten findet, die es gibt.
Nein, darum geht's nicht. Dass das Script tut, was es soll, könnte ich beweisen, wenn ich mich noch an Theoretische Informatik A erinnern würde. Tu ich aber nicht, also glaube ich meinen Tests. Das Script beweist aber nicht, dass meine Folge vollständig ist. Das kann es nicht, weil die Folge nicht endlich ist.
Meine Folge liefert eine hinreichende Bedingung für eine Siebenerkette. Dass diese Bedingung auch notwendig ist, müsste ich zeigen - aber sie ist es nicht. Ich lasse gerade mein Script laufen, bis t=1000.000.000, und soeben haut es mir für t=608.362.161 (und 1300s Laufzeit) eine Kettenbasis um die Ohren, die von meiner Folge nicht erfasst wird, bei dessen Quadrat 370.104.518.936.589.921 es aber eine 7er Kette gefunden hat. Ob das stimmt, oder ob mein Script einen Bug hat, muss ich noch nachrechnen.
Update:
t t² q(t²)
608.362.161 370.104.518.936.589.921 81
608.362.162 370.104.520.153.314.244 49
608.362.163 370.104.521.370.038.569 64
608.362.164 370.104.522.586.762.896 81
608.362.165 370.104.523.803.487.225 64
608.362.166 370.104.525.020.211.556 49
608.362.167 370.104.526.236.935.889 81
Liegt das an der CodePen-Umgebung? Oder dass ich Array.map() und Array.reduce() verwende?
Am Codepen wohl eher nicht. Meins läuft unter jsFiddle. Aber wenn Du die Quersumme mit Arrays bildest, dann bist Du definitiv zu lahm. Mein Prozessor ist übrigens ziemlich alt (Core i5 3470)
Update. So, bin bis zur Milliarde gekommen. Angefangen habe ich mit 17ns pro Zahl, gegen Ende ging es hoch bis 20ns. Laufzeit war 2000 Sekunden. Das Script in der letzten Fassung habe ich verloren, weil ich in JSFiddle kein Autosave verwende und im falschen Browserfenster F5 gedrückt habe 🙄. Gut, dass ich die Basiszahl für die Widerlegung der Notwendigkeit meiner Folge hierhin kopiert hatte.
Rolf
sumpsi - posui - obstruxi