Fermats letzter Satz besagt , dass es keine positiven, integrale Lösungen für die Gleichung a^n + b^n = c^n
für jeden n>2
. Dies wurde 1994 von Andrew Wiles bewiesen.
Es gibt jedoch viele "Beinaheunfälle", die die diophantische Gleichung beinahe erfüllen, sie jedoch um eins verfehlen. Genau genommen sind sie alle größer als 1 und sind integrale Lösungen von a^3 + b^3 = c^3 + 1
(die Folge ist der Wert jeder Seite der Gleichung in aufsteigender Reihenfolge).
Ihre Aufgabe ist es n
, die ersten n
Werte dieser Sequenz auszudrucken .
Hier sind die ersten Werte der Sequenz:
1729, 1092728, 3375001, 15438250, 121287376, 401947273, 3680797185, 6352182209, 7856862273, 12422690497, 73244501505, 145697644729, 179406144001, 648787169394, 938601300672, 985966166178, 1594232306569, 2898516861513, 9635042700640, 10119744747001, 31599452533376, 49108313528001, 50194406979073, 57507986235800, 58515008947768, 65753372717929, 71395901759126, 107741456072705, 194890060205353, 206173690790977, 251072400480057, 404682117722064, 498168062719418, 586607471154432, 588522607645609, 639746322022297, 729729243027001
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes !
Antworten:
Gelee , 16 Bytes
Brute-Force-Lösung. Probieren Sie es online!
quelle
Brachylog , 31 Bytes
Probieren Sie es online!
Dies ist keine vollständige rohe Gewalt, da hier Einschränkungen verwendet werden. Dies ist bei TIO etwas langsam (ca. 20 Sekunden
N = 5
). Dauert ca. 5 SekundenN = 5
und 13 SekundenN = 6
auf meinem Computer.Erläuterung
quelle
Perl, 78 Bytes
Brute-Force-Ansatz. Couting the shebang as two, die Eingabe erfolgt von stdin.
Beispielnutzung
Probieren Sie es online!
quelle
Mathematica, 95 Bytes
Unbenannte Funktion, die ein einzelnes positives ganzzahliges Argument verwendet
#
und eine Liste der gewünschten#
ganzen Zahlen zurückgibt. Aus Gründen der Lesbarkeit:Zeile 4 berechnet alle möglichen Summen von Ganzzahlwürfeln zwischen 2 und
b
+1 (mit der Initialisierungb=9
in Zeile 1) in sortierter Reihenfolge. Die Zeilen 3 bis 5 wählen aus diesen Summen nur diejenigen aus, die auch mehr als ein perfekter Würfel sind. Zeile 6 beschränkt diese Liste auf höchstens#
Werte, die in gespeichert sinda
. Wenn diese Liste jedoch weniger als#
Werte enthält, wird dieWhile
Schleife in den Zeilen 1 bis 7 inkrementiertb
und erneut versucht. Schließlich gibt Zeile 8 aus,a
sobald es die richtige Länge hat.Heilige Hölle, diese Version ist langsam! Für ein zusätzliches Byte können wir
b++
in Zeile 7 ändernb*=9
und den Code tatsächlich in angemessener Zeit ausführen lassen (tatsächlich habe ich ihn so getestet).quelle
Schläger 166 Bytes
Ungolfed:
Testen:
Ausgabe:
quelle
Python 2 ,
10298 BytesProbieren Sie es online!
quelle
Pari / GP, 107 Bytes
Findet die ersten 10 Lösungen in 10 Sek.
Ziel: a ^ 3 + b ^ 3 = c ^ 3 + 1
Ermittelt die Anzahl der benötigten Lösungen durch das Funktionsargument n
Erhöht c von 3 und sucht für jedes c ^ 3 + 1 a und b mit 1 <a <= b <c, so dass a ^ 3 + b ^ 3 = c ^ 3 + 1 . Wenn gefunden, verringern Sie die erforderliche Anzahl weiterer Seelenlösungen n um 1 und wiederholen Sie den Vorgang
Ausführungen, wenn die Anzahl der zusätzlich benötigten Lösungen (in n ) gleich 0 ist
Nennen Sie es , um die ersten zehn Lösungen zu erhalten:
Lesbarer Code (erfordert führende und nachfolgende geschweifte Klammern als Indikatoren für die Blocknotation der Funktion. Außerdem werden aus praktischen Gründen alle Variablen einer Lösung gedruckt):
Pari / GP, 93 Bytes
(Verbesserung von Dennis)
quelle
Python 2,
122119 BytesWarum stimmst du immer noch zu? Dennis hat diese Antwort zerdrückt;)
Willkommen bei der längsten Lösung für diese Frage: / Ich habe es geschafft, ein ganzes Byte zu sparen, indem ich längere Bedingungen erstellt und so viele Einrückungen wie möglich entfernt habe.
Ausgabe für
n = 5
:quelle
TI-Basic, 90 Bytes
Es muss einen kürzeren Weg geben ...
quelle
MATLAB, 94 Bytes
Eine andere Brute-Force-Lösung:
Ausgabe für
n=4
:Durch Unterdrücken des
c=
Teils der Anzeige wird der Code auf 100 Byte erhöhtquelle
C #,
188174187136 BytesGolf-Version dank TheLethalCoder für seine tollen Code-Golftipps ( Online testen ! ):
Ausführungszeit, um die ersten 10 Zahlen zu finden: 33.370842 Sekunden auf meinem i7-Laptop (Originalversion unten war 9.618127 Sekunden für die gleiche Aufgabe).
Ungolfed-Version:
Vorherige Golfversion mit 187 Bytes
using System;
Vorherige Golf 174 Bytes Version (danke an Peter Taylor):
Vorherige (ursprüngliche) Golfversion mit 188 Bytes ( Online testen ! ):
Ausführungszeit, um die ersten 10 Zahlen zu finden: 9,618127 Sekunden auf meinem i7-Laptop.
Dies ist mein erster Versuch in der C # -Codierung ... Ein bisschen wortreich im Vergleich zu anderen Sprachen ...
quelle
for
Schleife deklarieren . 2.int.Parse
ist kürzer alsConvert.ToInt32
. 3.long
ist kürzerdouble
und genauer für diese Aufgabe. 4.t
ist unnötig: Sie können stattdessenn
bis herunterzählen0
. 5. Technisch gesehen müssen Sie nach dem Drucken zwei Schleifen durchbrechen, falls es einen dreifachen Zufall gibt.static void Main(){for(long a,b,c=3,n=int.Parse(Console.ReadLine());n>0;c++)for(a=2;a<c;a++)for(b=a;b<c;b++)if(a*a*a+b*b*b==c*c*c+1)Console.WriteLine(c*c*(a=c)+n/n--);}
Action
die die in der Methodensignatur verwendeten Bytes speichert, dh()=>{/*code here*/};
using System;
in dieGameMaker-Sprache, 119 Byte
Warum ist
show_message()
so lang :(x, y, z = 2,3,4 n = input (), während n: wenn y 3 + x 3 - z 3 == 1 und x 3 + 1; n - = 1 x + = 1 wenn y
quelle
Axiom, 246 Bytes
ungof und Ergebnis
quelle