dmdДля полноты картины сообщите, пожалуйста, сколько времени (и в какой CAS --- видимо, pari/gp?) работал Ваш i5, пока не решил этот миллион уравнений.
Как я понял, Ваш алгоритм основан на оценке
, но здесь, действительно, возникает вопрос о корректности:
Выходит что
не может быть больше
, но почему?
Это можно обосновать буквально голыми руками. А именно, можно рассуждать так: если
, то число
не может быть точным квадратом, потому что его можно поместить строго между двумя последовательными квадратами. И в самом деле: если, например,
, то имеем
(левое неравенство очевидно, а правое станет очевидным, если раскрыть скобки). Если же
, то
, что проверяется столь же просто. Таким образом, для любого решения a priori имеем
, и можно просто перебрать все такие
. Этим рассуждениям можно придать общий характер, что сделано, например, в статье Poulakis D. A simple method for solving the diophantine equation
// Elem. Math. 1999. Vol. 54. P. 32-36. Эта статья абсолютно элементарна (доступна школьникам). Алгоритм, который в ней описывается, я привык называть стандартным алгоритмом. Он известен очень давно. Я думал, что он существует на уровне фольклора, пока не наткнулся на статью Пулакиса.
Интрига, однако, в том, что этот алгоритм иногда может быть существенно улучшен. По-настоящему мы это поняли год назад, вот в этой теме:
topic136587.html Применительно к нашему уравнению
этот улучшенный алгоритм выглядит так. Пусть
--- некоторое решение, при этом
. Рассмотрим целое число
Тогда
Кроме того, если
, то
(здесь
--- абсолютные константы, близкие к единице). Более точно, нетрудно доказывается, что:
а) если
, то
;
б) если
, то
.
Как следствие, можно предложить следующий алгоритм решения нашего уравнения.
1. Для каждого целого
определить, будет ли число
точным квадратом.
2. Для каждого целого
,
, решить уравнение
относительно
, а именно, определить, является ли число
целым.
Предложенный алгоритм решения требует всего
извлечений квадратного корня. Используя Maple и процессор i7, можно решить миллион таких диофантовых уравнений за (примерно) 70 минут. Подозреваю, что если написать это на pari/gp, то будет быстрее.
Вот такая история
P.S. Еще один побочный результат нынешнего обсуждения: пример из статьи Stroeker R., de Weger B. Solving elliptic diophantine equations: the general cubic case // Acta Arith. 1999. Vol. 87. P. 339—365 о котором я рассказываю вот здесь
http://dxdy.ru/post1421247.html#p1421247 оказывается совсем неудачным, ибо само уравнение можно свести к элементарной "разности квадратов" и, тем самым, решать уравнение Морделла в данном случае как-то неприлично.
Upd. На самом деле все еще проще: все решения уравнения
могут быть легко описаны следующим образом. Пусть
--- множество всех целых делителей числа
. Тогда любое решение
находится по формулам
Таким образом, все сводится к перебору делителей
.