dmd писал(а):
Как? Это все тот же перебор.
Боюсь, что Ваша задача по любому эквивалентна факторизации (разложению на множители) D. Т.е. любой алгоритм её решения влечёт за собой либо доказательство, что D --- простое, либо нахождение одного из его нетривиальных делителей, если оно составное.
Пусть у нас D > 4, а (x, y) --- минимальное решение. Можно показать, что если D --- простое, то y=D-1, а если D --- составное, то y<D-1. Тогда либо D > НОД(y+1,D) > 1, либо D > НОД(y-1,D) > 1. Один из этих НОДов является нетривиальным делителем D.
Таким образом, если Вы сможете решить Вашу задачу без перебора, то сможете найти и решение задачи факторизации без использования перебора. А тогда --- озолотитесь.