Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Арифметика >> Номер 13

[Назад]    [Содержание ]    [Вперед]

  


Номер 13


  Условие: Номер 13


Задача 12. Найти наибольший общий делитель и наименьшее общее кратное чисел a и b.

  Решение задачи: Номер 13


Решение задачи 12. Как известно НОК(a,b)=ab/НОД(a,b). Для нахождения НОД используем алгоритм Евклида. Будем обозначать НОД(a,b) просто как (a,b). Шаг алгоритма. Пусть a>=b (если это не так, то просто поменяем содержимое переменных a и b местами). Если b=0, то (a,b)=a, СТОП. Иначе (a,b)=(a mod b,b). Действительно, если g=(a,b), то он делит и a, и b, и остаток r от деления a на b: a=bs+r, тут s - частное a div b, r = a mod b. Покажите, что (a,b)=(r,b). Обозначим через a величину a mod b. Снова выполним шаг алгоритма. Существует и другой, более быстрый ('машинный') вариант нахождения НОД: Для вычисления НОД воспользуемся следующими очевидными равенствами: 1). (0,a)=a, (a,b)=(b,a) 2). (a,b)=(a-b,b) 3). Если a и b оба четны, то (a,b)=2*(a/2,b/2) 4). Если a четно, а b - нет, то (a,b)=(a/2,b) 5). Если a и b оба нечетны и a>b, то (a-b) - четное число,при этом (a-b)<max{a,b} и (a,b)= =(a-b,b). Алгоритм : Шаг 1. k:=1 Шаг 2. Пока a и b одновременно четны, выполняем a:=a/2 b:=b/2 k:=k*2 Шаг 3. Если оба числа a и b нечетны,то на место большего из них заносимразность его и меньшего из чисел, иначе, если одно из чисел a или b четно, то делим его на 2. Шаг 4. Если одно из чисел (a или b) равно нулю, то (a,b) равен произведению другого числа на k, и алгоритм завершает работу, иначе перейти на шаг 3.

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017