В этом уроке мы поговорим о том как вычислять НОД и НОК. Дело в том, что элементарные арифметические вычисления должен уметь делать любой программист, так как алгоритм вычисления можно встретить во многих программах. Тем более вы их уже должны знать, если вы учились в школе 5 классе.
Наибольший общий делитель. НОД.
Для нахождения общего делителя вам нужно знать следующее:
Запомните: наибольший общий делитель (НОД) двух целых чисел – это наибольшее целое число, на которое делятся оба исходных числа без остатка. Однако одно из исходных чисел должно быть большее нуля.
Запомните: если у вас одно из двух чисел ноль, то НОД будет, то число что больше ноля.
Запомните: существует понятие взаимно-простых чисел, у которого нет общих делителей, кроме единицы. К примеру число 5 и 4, НОД этих чисел будет равен 1, так как если 5 разделить на 4 вы не получите целое число без остатка, следовательно НОД=1
Все остальные числа, у которых НОД больше 1, вычисляются по принципу бинарного алгоритма или с помощью алгоритма Евклида. В этой статье мы подробно разберем алгоритм Евклида, который еще называют взаимным вычитанием, поскольку НОД получается при последовательном вычитании меньшего из большего. Используем алгоритм Евклида в нашем примере НОД(12, 30). По алгоритму Евклида нам надо вычесть из большее меньшее, то есть из 30-12-12=6 В числе 30 у нас может поместиться число 12 только два раза, число 12 называют кратным, и остатком останется число 6. Теперь нам надо из числа 30 отнять кратное числа 6, которое у нас получилось, 30-6-6-6-6-6=5 НОД числа 12 и 30 будет равен 6. Так как нам надо найти именно наибольший делитель в нашем случаи 6 больше 5, следовательно НОД(12,30)=6. Как видите ничего сложного, теперь давайте составим блок схему.
Блок-схема «Алгоритм Евклида»

рис.1
Если число a и b равно, НОД этих чисел будет любое из них, так как они могут делиться друг на друга. Если a и b не равны, мы их сравниваем a<b, если a меньше чем b то их надо поменять местами в a присвоить значение b, в b присвоить значение а и перейти к следующему вычислению описанного ниже. Если a больше чем b то, надо из а вычесть b, результат сохранить в a, и так до тех пор, пока а не станет равно b. Рассмотрим на примере.
Пример НОД(12,30).
- 12=30 | a==b; //в нашем случаи 12 не равно 30
- 12<30 | a<b;//производим сравнение на < >
- 30 12 | a==b; b==a; //меняем местами
- 30-12=18 | a=a-b;//производим вычитание
- 18=12| a==b;//равно ли а и b
- 18<12| a<b; //в нашем случае а >b
- 18-12=6|a=a-b; //производим вычитание
- 6=12|a==b; //в нашем случаи 6 не равно 12
- 6<12|a<b; //производим сравнение на < >
- 6 12| a==b; b==a; //меняем местами
- 12-6=6|a=a-b;//производим вычитание
- 6=6| a==b; //в нашем случаи 6 равно 6
- НОД(12,30)=6;
Наименьшее общее кратное(НОК).
рис. 2В целом ничего сложного, главное не запутаться, сейчас мы нарисуем блок схему наименьшего общего кратного (НОК).
Блок схема Наименьшего общего кратного (НОК)
рис 3.
Алгоритм работы программы описан вначале, статьи о НОК.
Но как же быть если нам надо к примеру найти НОД трех и более натуральных чисел, или найти НОК трех или более натуральных чисел. Тут ничего сложного инструкцию по нахождению НОД из 3 чисел и НОК смотрим ниже.
НОД трех чисел:
- Сравниваем все числа К примеру a<b<c
- Начинаем вычисления с больших чисел к меньшим
- Вычисляем НОД по аналогии с двумя числами a и b
- Вычисляем по аналогии чисел НОД(a,b) и с Пример: НОД(a,b,c)=НОД((НОД(a,b)),с);
- НОД(12,30,60)
- 12<30<60
- НОД(60,30)=30
- НОД(30,12)=6
Точно так же производиться вычисления НОД из четырех чисел из пяти итд. По аналогии с НОД вычисляется и НОК с тремя и более числами. Приведу в пример НОД трех чисел блок схему алгоритма смотрите рис. 4.
Блок схема НОД алгоритма трех чисел, четырех чисел итд.

рис. 4
Разберем по подробнее работу программы блок схемы из рис. 4.
- У нас подается 3 числа, но их может быть сколько угодно.
- Их мы записываем в массив array.
- Выполняем метод sort(); Это мой метод он принимает массив чисел, делает сортировку по убыванию, пузырьковым методом, о нем вы можете прочитать из уроков о массивах.
- Выполняем метод nod(), который принимает первые два числа. Я создал метод по аналогии как написано выше в этой статье.
- В следующем блоке я помещаю в тело цикла метод nod(), который присваиваю возвращаемое число из метода nod() переменной a.
- Выводим результат.
- Завершаем работу программы.
Скачать калькулятор НОК и НОД .
Пока писал статью, написал программу НОК и НОД вычисления, которую можете скачать с сайта. Работа программы очень простая, достаточно в текстовое поле вписать цифры через пробел или запятую, нажать на кнопку вычислить или Enter и программа выведет результат. Программа написана на языке java. Может запускаться со всех систем.

рис 5.
Скачать калькулятор НОК и НОД .

