Rsa97, Я знаю, что есть разные варианты. Мне интересны не сами ответы, а как математически, не перебором, найти эти числа? Кто-нибудь, хоть когда-нибудь, сможет найти их не перебором?
А в чём проблема сделать так:
То есть взять два случайных числа и из них выразить 3 я не могу назвать это перебором, так как 3 мы просто вывели из известных других переменных.
В том, что автор вопроса написал только часть условий задачи, а другую часть (например, что требуется целочисленное решение) подразумевает у себя в голове. С этими товарищами, задающими вопросы на Хабре, телепатия, как говорится, must have.
Тут нет никаких математических методов найти все, или даже некоторые, решения. Математикой можно только перебор сократить.
Это диафантово уравнение. При чем очень сложное: от трех переменных да еще и кубическое. Только для каких-то самых тривиальных случаев, вроде линейного уравнения, еще есть какие-то алгоритмы прямо получения решения (вроде расширенного алгоритма Эвклида). Для некоторых классов существуют методы порождения всех решений, если вам известно одно, но это одно часто надо еще найти - перебором. Но вот такие уравнения человечество еще решать не научилось.
Корень, Можно спроисть код в комментариях. Или емейл nuberphile-у отправить. Может быть, они с вами кодом поделятся. Там что-то не совсем тривиальное, да. И по обрывку кода это не восстановить.
Наверняка код эти исследователи уже давну куда-нибудь на github выложили.
Корень, Плохая идея - пытаться связаться с кем-то из авторов через комментарий на каком-то новостном портале. Журналисты вас просто проигнорируют со 100% вероятностью.
У numberphile хотябы математики работают и коммьюнити какое-то есть. Так что есть шанс, что вам кто-то из зрителей ответит, или сами авторы свяжутся с героями ролика.
А вообще, самый лучший вариант - найти тех ребят, кто этот код написал напрямую. Ищите Andrew Booker at Bristol University, UK, and Andrew Sutherland at the Massachusetts Institute of Technology. Наверняка, найдете саму статью, там всегда имейлы авторов указывают. Туда им и пишите. Не забудьте письмо повежливее соствить. "Hello! Could you please share with me the code you used to find the solution to a^3+b^3+c^3=3?"
Корень, Нашел просто: скопировал имена из статьи вашей и вставил в scholar.google.com. Первая же ссылка - научная публикация. Я ее вам привел. Там же есть ссылка на гитхаб.
Этот код, конечно, лучще того от mayton2019. Потому что, во-первых, он специализированный под задачу, а не какой-то общий метод. Этим методом аж науку вперед продвинули и на numberphile попали. Во-вторых, генетические алгоритмы вообще диафантовы уравнения плохо решают. Там в примере же тривиальный случай - линейные уравнения. Для них все решения можно элементарно описать и очень быстро найти.
Wataru, Библиотека SymPy предназначена для решений Диофантовых уравнений, да и Василий Дёмин показал как считать от ноля, не только в плюс, но и в минус, я наверно несколько дней помучаюсь, потом ещё раз спрошу какой код лучше на GitHub или с SymPy?
for(int a = 0; ; a++) {
for(int b = 0; ; b++) {
// вычисления для a и b
// вычисления для -a и b
// вычисления для a и -b
//
}
}
Ты пришел сюда решать уравнение - так решай. Любые переборные методы - это
частный случай генетики. Поэтому или занимайся эффективными алгоритмами
или просто играйся.
mayton2019, Мне снова нравится ход ваших мыслей, мне тоже хочется пользоваться не перебором. Подскажите, как делается "семейство решений" по образцу для тройки?
mayton2019, Есть, что добавить. Я жду, когда придет кто-то из великих и скажет, mayton2019 - прав, перебором лучше не пользоваться, правильно делать так...
mayton2019, Как скажете. Сейчас поставлю лучшим ответом Wataru, но это будет не справедливо, у меня знаний меньше, чем у участников, и я не имею право делать такой выбор.