Наибольший общий делитель (нод). как найти нод двух и более чисел + калькулятор ⏳

Как найти нод двух чисел по алгоритму евклида

Домашние задания

1

Найдите все общие делители следующих чисел:

a) 11, 12

b) 14, 28

c) 10, 20, 35

d) 42, 63, 84, 105

a) 1
b) 1, 2, 7, 14
c) 1, 5
d) 1, 3, 7, 21

2

Являются ли следующие числа взаимно простыми? (Да/Нет)

a) 1, 2

b) 22, 56

c) 34, 63

d) 115, 135, 189

e) 104, 147, 171

f) 148, 168, 280

g) 188, 224, 238, 294

a) Да
b) Нет
c) Да
d) Да
e) Да
f) Нет
g) Нет

3

Найдите НОД при помощи алгоритма Евклида следующих чисел:

a) НОД ( 14, 38 )

b) НОД ( 16, 80, 96 )

c) НОД ( 9, 24, 33 )

d) НОД ( 19, 21, 31, 45 )

e) НОД ( 104, 117, 143, 169 )

a) 2
b) 16
c) 3
d) 1
e) 13

4

Найдите НОД при помощи разложения на простые множители следующих чисел:

a) НОД ( 12, 30 )

b) НОД ( 28, 36, 64 )

c) НОД ( 38, 95, 171 )

d) НОД ( 58, 68, 76, 94 )

e) НОД ( 132, 198, 231, 330 )

a) 6
b) 4
c) 19
d) 2
e) 33

5

При каких значениях x, равенство будет верным? *

x – натуральное число.

НОД ( x, 12 ) = 12 – x

x=6; x=8; x=9; x=10; x=11.

6

Чему равен x = ?, y = ?, b = ? *

Найдите НОД ( x, y, x + y, x – y) = b

17 + ( 193 – 2x ) ∙ 13 = 908 : 4 – ( 7 – 5 ∙ 14 : 2 ) + 87

14y – ( 9 ∙ 45 + 85 : 5 + 68 ) = 0

x = 84, y = 35, b = 7.

Операции по модулю

Выражение \(a \equiv b \pmod m\) означает, что остатки от деления \(a\) на \(m\) и \(b\) на \(m\) равны. Это выражение читается как «\(a\) сравнимо \(b\) по модулю \(m\)».

Еще это можно опрделить так: \(a\) сравнимо c \(b\) по модулю \(m\), если \((a — b)\) делится на \(m\).

Все целые числа можно разделить на классы эквивалентности — два числа лежат в одном классе, если они сравнимы по модулю \(m\). Говорят, что мы работаем в «кольце остатков по модулю \(m\)», и в нем ровно \(m\) элементов: \(0, 1, 2, \cdots, m-1\).

Сложение, вычитение и умножение по модулю определяются довольно интуитивно — нужно выполнить соответствующую операцию и взять остаток от деления.

С делением намного сложнее — поделить и взять по модулю не работает. Об этом подробнее поговорим чуть дальше.

Задание

Посчитайте: * \(2 + 3 \pmod 5\) * \(2 * 3 \pmod 5\) * \(2 ^ 3 \pmod 5\) * \(2 — 4 \pmod 5\) * \(5 + 5 \pmod 6\) * \(2 * 3 \pmod 6\) * \(3 * 3 \pmod 6\)

Для умножения (в C++) нужно ещё учитывать следующий факт: при переполнении типа всё ломается (разве что если вы используете в качестве модуля степень двойки).

  • вмещает до \(2^{31} — 1 \approx 2 \cdot 10^9\).
  • вмещает до \(2^{63} — 1 \approx 8 \cdot 10^{18}\).
  • в плюсах нет, при попытке заиспользовать выдает ошибку .
  • Под некоторыми компиляторами и архитектурами доступен , но не везде и не все функции его поддерживают (например, его нельзя вывести обычными методами).

Зачем нужно считать ответ по модулю

Очень часто в задаче нужно научиться считать число, которое в худшем случае гораздо больше, чем \(10^{18}\). Тогда, чтобы не заставлять вас писать длинную арифметику, автор задачи часто просит найти ответ по модулю большого числа, обычно \(10^9 + 7\)

Кстати, вместо того, чтобы писать \(1000000007\) удобно просто написать \(1e9 + 7\). \(1e9\) означает \(1 \times 10^9\)

Различные способы найти НОД

Проще всего ответить на вопрос как найти НОД в том случае, когда меньшее число является делителем большего. Оно и будет в подобном случае наибольшим общим делителем.

Например, НОД (15;45) = 15, НОД (48;24) = 24.

Но такие случаи в математике являются весьма редкими, поэтому для того, чтобы находить НОД используются более сложные приёмы, хотя проверять этот вариант перед началом работы все же весьма рекомендуется.

Способ разложения на простые сомножители

Если необходимо найти НОД двух или более различных чисел, достаточно разложить каждое из них на простые сомножители, а затем произвести процесс умножения тех из них, которые имеются в каждом из чисел.

Пример 1

Рассмотрим, как находить НОД 36 и 90:

  1. 36 = 1*2*2*3*3;
  2. 90 = 1*2*3*3*5;

НОД (36;90) = 1*2*3*3 = 18.

Теперь посмотрим как находить то же самое в случае трёх чисел, возьмём для примера 54; 162; 42.

Как разложить 36 мы уже знаем, разберёмся с остальными:

  1. 162 = 1*2*3*3*3*3;
  2. 42 = 1*2*3*7;

Таким образом, НОД (36;162;42) = 1*2*3 = 6.

Следует заметить, что единицу в разложении писать совершенно необязательно.

Рассмотрим способ, как просто раскладывать на простые множители, для этого слева запишем необходимую нам цифру, а справа станем писать простые делители.

Разделять колонки можно, как знаком деления, так и простой вертикальной чертой.

  1. 36 / 2 продолжим наш процесс деления;
  2. 18 / 2 далее;
  3. 9 / 3 и ещё раз;
  4. 3 / 3 сейчас совсем элементарно;
  5. 1 — результат готов.

Искомое 36 = 2*2*3*3.

Евклидов способ

Этот вариант известен человечеству ещё со времён древнегреческой цивилизации, он во многом проще, и приписывается великому математику Евклиду, хотя весьма похожие алгоритмы применялись и ранее. Этот способ заключается в использовании следующего алгоритма, мы делим большее число с остатком на меньшее. Затем наш делитель делим на остаток и продолжаем так действовать по кругу пока не произойдёт деление нацело. Последнее значение и окажется искомым наибольшим общим делителем.

Приведём пример использования данного алгоритма:

попробуем выяснить какой НОД у 816 и 252:

  1. 816 / 252 = 3 и остаток 60. Сейчас 252 разделим на 60;
  2. 252 / 60 = 4 в остатке на этот раз окажется 12. Продолжим наш круговой процесс, разделим шестьдесят на двенадцать;
  3. 60 / 12 = 5. Поскольку на сей раз никакого остатка мы не получили, то у нас готов результат, двенадцать будет искомым для нас значением.

Итак, по завершении нашего процесса мы получили НОД (816;252) = 12.

Действия при необходимости определения НОД если задано более двух значений

Мы уже разобрались, что делать в случае, когда имеется два различных числа, теперь научимся действовать, если их имеется 3 и более.

При всей кажущейся сложности, данная задача проблем у нас уже не вызовет. Сейчас мы выбираем два любые числа и определяем искомое для них значение. Следующим шагом отыскиваем НОД у полученного результата и третьего из заданных значений. Затем снова действуем по уже известному нам принципу для четвёртого пятого и так далее.

Взаимно простые числа

Рассмотрим ситуацию.

В первой банке лежало 9 декоративных камней, во второй – 14 . Сколько  предметов интерьера, можно украсить  имеющимся материалом, если на каждое изделие использовать равное, при этом, наибольшее количество,камней из первой и второй коробки?

Чтобы ответить на главный вопрос задачи, нужно выполнить определенные вычисления. Для этого, разложим данные значения на простые составляющие:

14 | 2             9 | 3

 7  | 7             3 | 3

 1                   1

Выписываем компоненты, входящие в состав известных значений:

14 = 2 × 7

9 = 3 × 3

 Повторяющихся составляющих нет. Мы знаем, если любое натуральное число  умножить на 1, числовое значение не изменится. Значит, единственный, наибольший общий множитель чисел – 1.

Данным количеством камней получится  украсить только один предмет интерьера, если использовать равное, наибольшее количество материала из обеих банок.

 В арифметике числа, наибольшим общим множителем которых является 1, называют взаимно простыми.

Чтобы ответить на главный вопрос задачи, нужно выполнить определенные вычисления. Для этого, разложим данные значения на простые составляющие:

14 | 2             9 | 3

 7  | 7             3 | 3

 1                   1

Выписываем компоненты, входящие в состав известных значений:

14 = 2 × 7

9 = 3 × 3

 Повторяющихся составляющих нет. Мы знаем, если любое натуральное число  умножить на 1, числовое значение не изменится. Значит, единственный, наибольший общий множитель чисел – 1.

Данным количеством камней, получится  украсить только один предмет интерьера, если использовать равное, наибольшее количество материала из обеих банок.

 В арифметике, числа, наибольшим общим множителем которых является 1, называют взаимно простыми

Чтобы ответить на главный вопрос задачи, необходимо определить самое маленькое числовое значение, которое будет, без остатка делиться на 4, на 5, то есть будет кратно 4, 5.

Сначала, подберем значения, кратные четырем: 4,8,12,16,20,24,28.

Теперь, значения, кратные пяти: 5,10,15,20,25,30.

После этого, необходимо найти самое маленькое число, которое будет кратным 4, 5 одновременно.

Из перечисленных числовых значений,  подходит только 20. Оно делится без остатка на 4, на 5. Наименьшим общим кратным двух чисел будет 20.

Важно!

В математике существует специальный алгоритм для нахождения наименьшего общего кратного нескольких натуральных числовых значений:

Например:

Вычислим НОК для 30 и 32.

Чтобы выполнить нужные вычисления воспользуемся алгоритмом нахождения НОК.

Разберем задачу

В городе Москва, для  качественной съемки парада, приуроченного к празднику 9 Мая, организаторы подготовили квадрокоптеры с видеокамерами. Из одной точки  одновременно, будут запущены три аппарата. Время полета первого 8 минут, второго – 12.Через какое время,квадрокоптеры снова будут запущены одновременно, если по возвращению в точку запуска им меняют батарею и сразу отправляют назад.

Чтобы получить ответ на главный вопрос задачи, найдем наименьшее числовое значение, кратное двум данным величинам.

Для этого будем использовать рассмотренный алгоритм:

Квадрокоптеры будут одновременно запущены через 24 минуты.

Последняя задачка  на внимательность.

На уроке Ваня около доски выполнял задание. Он написал: НОК (25; 115) = 100. Подскажите Ване, верно ли он выполнил задание (не выполняя вычислений)?

Вначале, давайте вспомним определение НОК:

Из определения следует, НОК нацело делится на известные данные. Однако,видим, что 100 на 115 нацело разделить невозможно. Поэтому Ваня, допустил ошибку в своих расчетах!

Вот так легко и просто можно решить огромное количество задач, даже не совершая сложных вычислений!

Пока, вы только ученики 6 класса. Пройдет совсем немного времени и каждому придется делать главный выбор в своей жизни – «Кем стать?». Если  решите связать жизнь с программированием, интернет-ресурсами, научной деятельностью, вам нужно запомнить все правила и определения. Рассмотренные сегодня алгоритмы лежат в основе разработки, создания, компьютерных программ, сайтов, игр.

НОК: наименьшее общее кратное

Это понятие арифметики и системы счисления. НОК двух целых чисел a и b обозначается НОК(a,b). Это наименьшее натуральное число, которое делится и на «а», и на «b».

Например: у нас есть два целых числа 4 и 6. Найдем НОК:

Кратные 4:

 
4, 8, 12, 16, 20, 24, 28, 32, 36,... and so on... 

Кратные 6:

 
6, 12, 18, 24, 30, 36, 42,... and so on.... 

Общие кратные 4 и 6 — это просто числа, которые есть в обоих списках:

 
12, 24, 36, 48, 60, 72,.... and so on.... 

НОК — это наименьший общий множитель, поэтому он равен 12.

Поскольку мы поняли основную концепцию НОК, давайте рассмотрим следующую программу для нахождения НОК заданных целых чисел.

Пример:

 
# defining a function to calculate LCM 
def calculate_lcm(x, y): 
    # selecting the greater number 
    if x > y: 
        greater = x 
    else: 
        greater = y 
    while(True): 
        if((greater % x == 0) and(greater % y == 0)): 
            lcm = greater 
            break 
        greater += 1 
    return lcm   
 
# taking input from users 
num1 = int(input("Enter first number: ")) 
num2 = int(input("Enter second number: ")) 
# printing the result for the users 
print("The L.C.M. of", num1,"and", num2,"is", calculate_lcm(num1, num2)) 

Выход:

Enter first number: 3 
Enter second number: 4 
The L.C.M. of 3 and 4 is 12 

Объяснение:

Эта программа сохраняет два числа в num1 и num2 соответственно. Эти числа передаются в функцию calculate_lcm(). Функция возвращает НОК двух чисел.

Внутри функции мы сначала определили большее из двух чисел, поскольку наименьшее общее кратное может быть больше или равно наибольшему числу. Затем мы используем бесконечный цикл while, чтобы перейти от этого числа и дальше.

На каждой итерации мы проверяли, идеально ли делят оба числа число. Если это так, мы сохранили число как НОК и вышли из цикла. В противном случае число увеличивается на 1, и цикл продолжается.

Разложение на простые множители

Любое натуральное число можно разложить на произведение простых, и с такой записью очень легко работать при решении задач. Разложение на простые множители еще называют факторизацией.

\ \ \

Рассмотрим, например, такую задачу:

Условие: Нужно разбить \(N\) людей на группы равного размера. Нам интересно, какие размеры это могут быть.

Решение: По сути нас просят найти число делителей \(N\). Нужно посмотреть на разложение числа \(N\) на простые множители, в общем виде оно выглядит так:

\

Теперь подумаем над этим выражением с точки зрения комбинаторики. Чтобы «сгенерировать» какой-нибудь делитель, нужно подставить в степень \(i\)-го простого число от 0 до \(a_i\) (то есть \(a_i+1\) различное значение), и так для каждого. То есть делитель \(N\) выглядит ровно так: \ Значит, ответом будет произведение \((a_1+1) \times (a_2+1) \times \ldots \times (a_k + 1)\).

Алгоритм разложения на простые множители

Применяя алгоритм проверки числа на простоту, мы умеем легко находить минимальный простой делитель числа N. Ясно, что как только мы нашли простой делитель числа \(N\), мы можем число \(N\) на него поделить и продолжить искать новый минимальный простой делитель.

Будем перебирать простой делитель от \(2\) до корня из \(N\) (как и раньше), но в случае, если \(N\) делится на этот делитель, будем просто на него делить. Причем, возможно, нам понадобится делить несколько раз (\(N\) может делиться на большую степень этого простого делителя). Так мы будем набирать простые делители и остановимся в тот момент, когда \(N\) стало либо \(1\), либо простым (и мы остановились, так как дошли до корня из него). Во втором случае надо еще само \(N\) добавить в ответ.

Напишем алгоритм факторизации:

За сколько работает этот алгоритм?

Решение

За те же самые \(O(\sqrt{N})\). Итераций цикла while с перебором делителя будет не больше, чем \(\sqrt{N}\). Причем ровно \(\sqrt{N}\) операций будет только в том случае, если \(N\) — простое.

А итераций деления \(N\) на делители будет столько, сколько всего простых чисел в факторизации числа \(N\). Понятно, что это не больше, чем \(O(\log{N})\).

Разные свойства простых чисел*

Вообще, про простые числа известно много свойств, но почти все из них очень трудно доказать. Вот еще некоторые из них:

  • Простых чисел, меньших \(N\), примерно \(\frac{N}{\ln N}\).
  • N-ое простое число равно примерно \(N\ln N\).
  • Простые числа распределены более-менее равномерно. Например, если вам нужно найти какое-то простое число в промежутке, то можно их просто перебрать и проверить — через несколько сотен какое-нибудь найдется.
  • Для любого \(N \ge 2\) на интервале \((N, 2N)\) всегда найдется простое число (Постулат Бертрана)
  • Впрочем, существуют сколь угодно длинные отрезки, на которых простых чисел нет. Самый простой способ такой построить — это начать с \(N! + 2\).
  • Есть алгоритмы, проверяющие число на простоту намного быстрее, чем за корень.
  • Максимальное число делителей равно примерно \(O(\sqrt{n})\). Это не математический результат, а чисто эмпирический — не пишите его в асимптотиках.
  • Максимальное число делителей у числа на отрезке \(\) — 128
  • Максимальное число делителей у числа на отрекзке \(\) — 1344
  • Максимальное число делителей у числа на отрезке \(\) — 103680
  • Наука умеет факторизовать числа за \(O(\sqrt{n})\), но об этом как-нибудь в другой раз.
  • Любое число больше трёх можно представить в виде суммы двух простых (гипотеза Гольдбаха), но это не доказано.

Решето Эратосфена

Часто нужно не проверять на простоту одно число, а найти все простые числа до \(N\). В этом случае наивный алгоритм будет работать за \(O(N\sqrt N)\), так как нужно проверить на простоту каждое число от 1 до \(N\).

Но древний грек Эратосфен предложил делать так:

Запишем ряд чисел от 1 до \(N\) и будем вычеркивать числа: * делящиеся на 2, кроме самого числа 2 * затем деляющиеся на 3, кроме самого числа 3 * затем на 5, затем на 7, и так далее и все остальные простые до n. Таким образом, все незачеркнутые числа будут простыми — «решето» оставит только их.

Найдите этим способом на бумажке все простые числа до 50, потом проверьте с программой:

У этого алгоритма можно сразу заметить несколько ускорений.

Во-первых, число \(i\) имеет смысл перебирать только до корня из \(N\), потому что при зачеркивании составных чисел, делящихся на простое \(i > \sqrt N\), мы ничего не зачеркнем. Почему? Пусть существует составное \(M \leq N\), которое делится на %i%, и мы его не зачеркнули. Но тогда \(i > \sqrt N \geq \sqrt M\), а значит по ранее нами доказанному утверждению \(M\) должно делиться и на простое число, которое меньше корня. Но это значит, что мы его уже вычеркнули.

Во-вторых, по этой же самое причине \(j\) имеет смысл перебирать только начиная с \(i^2\). Зачем вычеркивать \(2i\), \(3i\), \(4i\), …, \((i-1)i\), если они все уже вычеркнуты, так как мы уже вычеркивали всё, что делится на \(2\), \(3\), \(4\), …, \((i-1)\).

Гармонический ряд

Научимся оценивать асимптотику величины \(1 + \frac{1}{2} + \ldots + \frac{1}{N}\), которая нередко встречается в задачах, где фигурирует делимость.

Возьмем \(N\) равное \(2^i — 1\) и запишем нашу сумму следующим образом: \

Каждое из этих слагаемых имеет вид \

Таким образом, наша сумма не превосходит \(1 + 1 + \ldots + 1 = i \le 2\log_2(2^i — 1)\). Тем самым, взяв любое \(N\) и дополнив до степени двойки, мы получили асимптотику \(O(\log N)\).

Оценку снизу можно получить аналогичным образом, оценив каждое такое слагаемое снизу значением \(\frac{1}{2}\).

Попытка объяснения асимптотики** (для старших классов)

Мы знаем, что гармонический ряд \(1 + \frac{1}{2} + \frac{1}{3} + \ldots + \frac{1}{N}\) это примерно \(\log N\), а значит \

А что такое асимптотика решета Эратосфена? Мы как раз ровно \(\frac{N}{p}\) раз зачеркиваем числа делящиеся на простое число \(p\). Если бы все числа были простыми, то мы бы как раз получили \(N \log N\) из формули выше. Но у нас будут не все слагаемые оттуда, только с простым \(p\), поэтому посмотрим чуть более точно.

Известно, что простых чисел до \(N\) примерно \(\frac{N}{\log N}\), а значит допустим, что k-ое простое число примерно равно \(k ln k\). Тогда

\

Но вообще-то решето можно сделать и линейным.

Понравилась статья? Поделиться с друзьями:
Setup Pro
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: