Le dernier théorème de Fermat dit qu'il n'y a pas de solutions intégrales positives à l'équation a^n + b^n = c^n
pour aucune n>2
. Cela a été prouvé par Andrew Wiles en 1994.
Cependant, il existe de nombreux "quasi-accidents" qui satisfont presque à l'équation diophantienne mais la manquent d'une unité. Précisément, ils sont tous supérieurs à 1 et sont des solutions intégrales de a^3 + b^3 = c^3 + 1
(la séquence est la valeur de chaque côté de l'équation, dans l'ordre croissant).
Votre tâche est donnée n
, d'imprimer les premières n
valeurs de cette séquence.
Voici les premières valeurs de la séquence:
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
C'est le code-golf , donc le code le plus court en octets gagne!
Réponses:
Gelée , 16 octets
Solution de force brute. Essayez-le en ligne!
la source
Brachylog , 31 octets
Essayez-le en ligne!
Ce n'est pas une force brute complète car cela utilise des contraintes. C'est un peu lent sur TIO (environ 20 secondes pour
N = 5
). Prend environ 5 secondes pourN = 5
et 13 secondes pourN = 6
sur ma machine.Explication
la source
Perl, 78 octets
Approche par force brute. Coutant le shebang comme deux, l'entrée est tirée de stdin.
Exemple d'utilisation
Essayez-le en ligne!
la source
Mathematica, 95 octets
Fonction sans nom prenant un seul argument entier positif
#
et retournant une liste des#
entiers souhaités . Espacé pour la lisibilité humaine:La ligne 4 calcule toutes les sommes possibles de cubes d'entiers compris entre 2 et
b
+1 (avec l'initialisationb=9
à la ligne 1) dans l'ordre trié. Les lignes 3 à 5 ne choisissent parmi ces sommes que celles qui sont aussi un de plus qu'un cube parfait; la ligne 6 limite cette liste à au plus des#
valeurs, qui sont stockées dansa
. Mais si cette liste contient en fait moins de#
valeurs, laWhile
boucle des lignes 1 à 7 s'incrémenteb
et réessaye. Enfin, la ligne 8 sorta
une fois qu'elle a la bonne longueur.Merde, cette version est lente! Pour un octet supplémentaire, nous pouvons changer
b++
à la ligne 7b*=9
et faire exécuter le code dans un délai raisonnable (en effet, c'est comme ça que je l'ai testé).la source
Raquette 166 octets
Ungolfed:
Essai:
Sortie:
la source
Python 2 ,
10298 octetsEssayez-le en ligne!
la source
Pari / GP, 107 octets
Trouve les 10 premières solutions en 10 sec.
Objectif: a ^ 3 + b ^ 3 = c ^ 3 + 1
Obtient le nombre de solutions requises par argument de fonction n
Augmente c de 3 et pour chaque c ^ 3 + 1 recherche a et b avec 1 <a <= b <c tel que a ^ 3 + b ^ 3 = c ^ 3 + 1 . Si trouvé, diminuez le nombre requis d'autres soulutions n de 1 et répétez
Termine, lorsque le nombre de solutions supplémentaires requises (en n ) est égal à 0
Appelez-le pour obtenir les dix premières solutions:
Code lisible (nécessite des accolades de tête et de fin comme indicateurs pour la notation par blocs de la fonction. Imprime également toutes les variables d'une solution pour plus de commodité):
Pari / GP, 93 octets
(Amélioration par Dennis)
la source
Python 2,
122119 octetspourquoi votez-vous toujours? Dennis a écrasé cette réponse;)
Bienvenue dans la solution la plus longue à cette question: / J'ai réussi à raser un octet entier en allongeant les conditions et en supprimant autant de retrait que possible.
Sortie pour
n = 5
:la source
TI-Basic, 90 octets
Il doit y avoir un chemin plus court ...
la source
MATLAB, 94 octets
Une autre solution de force brute:
Sortie pour
n=4
:La suppression de la
c=
partie de l'affichage augmente le code à 100 octetsla source
C #,
188174187136 136 octetsVersion golfée grâce à TheLethalCoder pour son excellent code de golf et ses conseils ( Essayez en ligne! ):
Temps d'exécution pour trouver les 10 premiers chiffres: 33,370842 secondes sur mon ordinateur portable i7 (la version originale ci-dessous était de 9,618127 secondes pour la même tâche).
Version non-golfée:
Version précédente de 187 octets
using System;
Version précédente de 174 octets de golf (merci à Peter Taylor):
Version précédente (originale) de 188 octets ( essayez en ligne! ):
Temps d'exécution pour trouver les 10 premiers chiffres: 9,618127 secondes sur mon ordinateur portable i7.
C'est ma toute première tentative de codage C # ... Un peu verbeux par rapport à d'autres langages ...
la source
for
boucle. 2.int.Parse
est plus court queConvert.ToInt32
. 3.long
est plus courtdouble
et plus précis pour cette tâche. 4.t
n'est pas nécessaire: vous pouvez compter àn
rebours à la0
place. 5. Techniquement, je pense que vous devez rompre deux boucles après l'impression, au cas où il y aurait une triple coïncidence.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
()=>{/*code here*/};
using System;
au nombre d'octetsGameMaker Language, 119 octets
Pourquoi est-ce
show_message()
si long :(x, y, z = 2,3,4 n = input () tandis que n: si y 3 + x 3-z3 == 1et x3 + 1; n- = 1 x + = 1 si y
la source
Axiome, 246 octets
ungof et résultat
la source