Последняя теорема Ферма говорит, что нет никаких положительных, интегральных решений уравнения a^n + b^n = c^n
для любого n>2
. Эндрю Уайлс подтвердил это в 1994 году.
Однако есть много «промахов», которые почти удовлетворяют диофантовому уравнению, но пропускают его по одному. Точнее, все они больше 1 и являются интегральными решениями a^3 + b^3 = c^3 + 1
(последовательность - это значение каждой стороны уравнения в порядке возрастания).
Ваша задача - n
распечатать первые n
значения этой последовательности.
Вот первые несколько значений последовательности:
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
Это код-гольф , поэтому выигрывает самый короткий код в байтах !
Ответы:
Желе , 16 байт
Решение для перебора. Попробуйте онлайн!
источник
Брахилог , 31 байт
Попробуйте онлайн!
Это не полная грубая сила, поскольку она использует ограничения. Это немного медленно на TIO (около 20 секунд
N = 5
). Занимает на моей машине около 5 секундN = 5
и 13 секундN = 6
.объяснение
источник
Perl, 78 байт
Метод грубой силы. Называя Шебанг двумя, вход берется из стандартного ввода.
Образец использования
Попробуйте онлайн!
источник
Mathematica, 95 байт
Безымянная функция, принимающая один положительный целочисленный аргумент
#
и возвращающая список желаемых#
целых чисел. Размещено для удобства чтения:В строке 4 вычисляются все возможные суммы кубов целых чисел от 2 до
b
+1 (с инициализациейb=9
в строке 1) в отсортированном порядке. Строки 3-5 выбирают из этих сумм только те, которые на один больше идеального куба; строка 6 ограничивает этот список не более чем#
значениями, которые хранятся вa
. Но если этот список на самом деле имеет меньше#
значений,While
цикл в строках 1-7 увеличиваетсяb
и пытается снова. Наконец, строка 8 выводит, какa
только это правильная длина.Черт возьми, эта версия медленная! За один дополнительный байт мы можем изменить
b++
в строке 7b*=9
и заставить код действительно запускаться за разумное время (действительно, именно так я это и проверил).источник
Ракетка 166 байт
Ungolfed:
Тестирование:
Выход:
источник
Python 2 ,
10298 байтПопробуйте онлайн!
источник
Пари / ГП, 107 байт
Находит первые 10 решений за 10 сек.
Цель: a ^ 3 + b ^ 3 = c ^ 3 + 1
Получает количество требуемых решений по функции-аргументу n
Увеличивает c с 3 и для каждого c ^ 3 + 1 ищет a и b с 1 <a <= b <c , так что a ^ 3 + b ^ 3 = c ^ 3 + 1 . Если найдено, уменьшите необходимое количество дальнейших растворов n на 1 и повторите
Завершается, когда число дополнительно требуемых решений (в n ) равно 0
Позвоните, чтобы получить первые десять решений:
Читаемый код (требуются начальные и конечные скобки в качестве индикаторов для блочной нотации функции. Также для удобства выводятся все переменные решения):
Par / GP, 93 байта
(Улучшение Денисом)
источник
Python 2,
122119 байтпочему вы все еще голосуете? Денис раздавил этот ответ;)
Добро пожаловать в самое длинное решение этого вопроса: / Мне удалось сбрить целый байт, поставив более длинные условия и удалив как можно больше отступов.
Выход для
n = 5
:источник
TI-Basic, 90 байтов
Должен быть более короткий путь ...
источник
MATLAB, 94 байта
Еще одно решение для перебора:
Выход для
n=4
:Подавление
c=
части дисплея увеличивает код до 100 байтисточник
C #,
188174187136 байтВерсия для игры в гольф спасибо TheLethalCoder за его великолепный код и советы ( попробуйте онлайн! ):
Время выполнения, чтобы найти первые 10 чисел: 33,370842 секунды на моем ноутбуке i7 (оригинальная версия ниже составляла 9,618127 секунд для той же задачи).
Безголовая версия:
Предыдущая версия для гольфа объемом 187 байт, включая
using System;
Предыдущая версия для гольфа объемом 174 байта (спасибо Питеру Тейлору):
Предыдущая (оригинальная) версия для гольфа объемом 188 байт ( попробуйте онлайн! ):
Время выполнения, чтобы найти первые 10 чисел: 9 618127 секунд на моем ноутбуке i7.
Это моя первая попытка кодирования на C # ... немного многословно по сравнению с другими языками ...
источник
for
цикла. 2.int.Parse
короче чемConvert.ToInt32
. 3.long
корочеdouble
и точнее для этой задачи. 4.t
это не нужно: вы можете считатьn
до0
. 5. Технически, я думаю, вам нужно разорвать две петли после печати на случай тройного совпадения.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;
Язык GameMaker, 119 байт
Почему
show_message()
так долго :(x, y, z = 2,3,4 n = input (), тогда как n: если y 3 + x 3-z3 == 1 и x3 + 1; n- = 1 x + = 1, если y
источник
Аксиома, 246 байт
ungof и результат
источник