Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2013, 20:44   #1
cail10
Новичок
Джуниор
 
Регистрация: 26.02.2013
Сообщений: 2
По умолчанию Определите значения x и y для заданныхм значений a и b .

В математике доказывается следующая теорема.Если a и b одновременно не равны нулю, то существуют целые числа x и y, такие, что НОД(a,b)= ax+by. Теорема не утверждает, что x и y определены однозначно, она лишь говорит о том, что НОД(a,b) может быть выражен в таком виде.
Привер: 6=НОД(12,-30)=12*3+(-30)*1==12*(-2)+(-30)*(-1)
Определите значения x и y для заданныхм значений a и b .
Блок схему и программу,пожалуйста))
cail10 вне форума Ответить с цитированием
Старый 26.02.2013, 21:56   #2
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Гуглим соотношение Безу и алгоритм Евклида.
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 26.02.2013, 22:07   #3
cail10
Новичок
Джуниор
 
Регистрация: 26.02.2013
Сообщений: 2
По умолчанию

Ну реши уж,если сам знаешь)Пожалуйса))
cail10 вне форума Ответить с цитированием
Старый 26.02.2013, 22:20   #4
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от cail10 Посмотреть сообщение
Ну реши уж,если сам знаешь)Пожалуйса))
После того, как увижу Ваши наработки и заинтересованность в решении.
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 26.02.2013, 22:37   #5
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Ну реши уж,если сам знаешь)Пожалуйса))
Ага! И принести на блюдечке с голубой каемочкой..

Цитата:
Гуглим соотношение Безу и алгоритм Евклида.
Александр, Спасибо!

Но все-таки я не понял как решить эту задачку, а гугл играет в партизана..

Задачу можно разбить на 2 подзадачи :
1) Находим НОД (как его найдем - это дело десятое)
2) Ищем коэффициенты Безу..

Вот со 2 у меня и проблемы.. Как искать эти коэффициенты? Перебор? А откуда и до куда? А если не он, то что?
За ранее спасибо!
Poma][a вне форума Ответить с цитированием
Старый 26.02.2013, 23:05   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

можно наверно поискать примеры при которых решение не пройдет но мне лень честно говоря
Код:
var x,y,m,n:Longint;
i,j:Longint;
function NOD(x,y:longint):longint;
 begin
  if x<>0 then NOD:= NOD(y mod x,x) else NOD:= y;
 end;
begin
write('x=');readln(x);
write('y=');readln(y);
n:=NoD(x,y);
m:=x div n;
if m < (y div n) then m :=y div n;
for i := -m to m do
  For j:=-m to m do
  begin
    if x*i+y*j=n then
    writeln('(',x,')*(',i,')+(',y,')*(',j,')=(',n,')');
  end;
readln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 26.02.2013, 23:10   #7
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Вот со 2 у меня и проблемы.. Как искать эти коэффициенты? Перебор? А откуда и до куда? А если не он, то что?
Ищем НОД по алгоритму Евклида, как
Код:
a = b*q0 + r1
b = r1*q1 + r2
...
r[n-1] = rn*qn
Потом можем через связь остатков и НОДа найти коэффициенты перед a и b, для чего выражаем из первого равенства r1 = a - b*q0 и так далее, до самого НОДа. Получаем в итоге что-то типа
Код:
НОД = a*f1(q0,...,qn) + b*f2(q0,...,qn)
Отсюда находим частные коэффициенты. А потом по формуле можно вычислить все множество коэффициентов Безу, зная НОД и частные коэффициенты.


Upd.
На примере проще. Допустим, для чисел 380 и 24. Ищем НОД:
Код:
a = b*q0 + r1  ---  380 = 24*15 + 20
b = r1*q1 + r2  ---  24 = 20*1 + 4
r1 = r2*q2 + r3  ---  20 = 4*5 + 0
Откуда, НОД = 4, q0 = 15, q1 = 1.
Теперь ищем x и y.
Код:
r1 = a - b*q0
r2 = b - r1*q1 = b - a*q1 + b*q0*q1 = b(1 + q0*q1) + a(-q1) = a*xч + b*yч
xч = -q1 = -1
yч = 1 + q0*q1 = 16
Ну и множество (x,y) определяется как
Код:
(xч + k*b/НОД, yч - k*a/НОД)
В нашем случае (-1 + 6*k, 16 - 95*k), где k - целое число. Как-то так.
Μολὼν λαβέ

Последний раз редактировалось alexander13; 26.02.2013 в 23:33. Причина: Очепятка
alexander13 вне форума Ответить с цитированием
Старый 27.02.2013, 20:51   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Огроменное Спасибо!!
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В задаче необходимо вывести на экран таблицу значений функции У(х) и ее разложения в ряд С (х) для значений х от до с шагом.(Паск fashionweek Паскаль, Turbo Pascal, PascalABC.NET 1 07.02.2013 23:11
Вычисление значений функции для нескольких значений аргументов и параметров kolychii Помощь студентам 0 08.10.2012 15:49
Для заданных значений аргумента Х вычислить значения суммы S и функцию Z Infinity11 Помощь студентам 8 23.11.2009 09:35
определите, сколько троек может быть использовано для построения треугольника баста Помощь студентам 3 17.02.2009 20:34
Суммирование значений и выведения максимального значения Bor_man Microsoft Office Excel 2 12.04.2007 19:49