Честно говоря у меня здесь путаница в голове, не знаю как правильно алгоритмизировать. Измените строчку
for(j=0, 100, на
for(j=0, 4, и раскоментарьте
print ниже - увидете, какого типа невалидные решения получаются. Они не целые. Просто я ожидаю, что целое решение может найтись, возможно, при каком-то большом
j. Так было например в задаче темы
Первые 100 - целое решение соответствующего уравнения находилось при домножении нормы на достаточно большую степень фундаментальной единицы (вот эта строчка
s= lift(n*fu^j);). Чтобы избежать длинного перебора
j, нужно из коэффициента
выделить полный квадрат
, если он есть, решать уравнение
, где
, и проверять в найденных решениях делимость
на
. Тогда, вроде бы, перебор
j можно ограничить значениями
0,1,2,3,4. Выяснил это экспериментально, и тоже не уверен в этом.
А почему минимальное значение
должно находиться в пределах
?