|
|
Книги-onlineДиофантовы уравнения.
Диофантовы уравнения.Введение. Эта страница появилась благодаря Казакову Ю.В., который интересуется именно этой тематекой, и я надеюсь пришлет еще не мало интересных алгоритмов. В качестве некоторой вводной, публикую его статью Диофантова задача о «рациональном кубоиде».. Надеюсь, что она Вас заинтересует, если да пишите Юрию Казакову, а я буду рад, если пришлете мне алгоритмы, которые появяться в результате Ваших работ.
Наверх
Пусть задано диофантово уравнение: ax+by=c, где a,b,c- целые Его частное решение можно найти следующим образом: Находим наибольший общий делитель чисел a и b - НОД(a,b) и запомним частные qi (см. НОД) деления чисел |a| и |b| по алгоритму Евклида. Если НОД(a,b)=c=0, то уравнению удовлетворяют любые целые x и y. Если НОД(a,b) не равен 0 и c на НОД(a,b) не делится, то уравнение не имеет решения. Иначе производим сокращение коэффициентов a,b,c и получаем уравнение того же вида со взаимно простыми a,b,c. Далее находим u и v, такие, что |a|u+|b|v=1 умножив u и v на csgn(a) и csgn(b) соответственно, находим частное решение уравнения x0,y0. Общее решение тогда имеет вид x=x0+kb, y=y0-ka. Процедура имеет 3 выходных параметра это s типа string для описания ситуации с решением (есть, нет, все целые и т.п.), и частные решения x0,y0 типа integer.
Наверх
Алгоритм прислан Казаковым Ю.В.. Необходимо найти все разложения числа d2 на сумму двух квадратов x2 и y2. x и y - положительные целые числа больше 0. ( Альтернативная формулировка. Найти все прямоугольные треугольники, имеющие целочисленные стороны и длину гипотенузы равную d). Условие существования разложения d2 на сумму двух целых квадратов требует, чтобы в разложении числа d на множители присутствовало, хотя бы одно простое число вида (4*t+1). То есть должно иметь место представление: где множитель s не содержит простых сомножителей вида (4*t+1). Количество решений уравнения будет зависить от ki, но не будет зависить от числа s, так как если существует набор пар при s=1, то естественно будет существовать набор и для любого другого s, только каждый элемент пары разложения будут умножен на s. Заметим, что для существования разложения необходимо найти три числа (w,r,q), такие что d=w(r2+q2)тогда x=w(r2-q2), y=2wrq. Таким образом находяться все пары (x,y). Заметим что для пары (x,y) симметричная ей пара (y,x) так же удовлетворяет уравнению, но мы ее в алгоритме на выход не доставляем. Алгоритм использует выражение вида trunc(a)=a для определения является ли число a целым. Наверх Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском . книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать |
|