Для решения задачи необходимо найти НОД множества. Может кто-либо предоставить код, или алгоритм, чтобы сделать это достаточно быстро. Дополнительный вопрос: изначальная задача — найти числа, при деление на которые все элементы множества дают одинаковый остаток. Можно ли найти такие числа быстрее, чем перебором чисел от 2 до НОД всех элементов множества разностей изначального множества?
Отслеживать
9,789 3 3 золотых знака 29 29 серебряных знаков 42 42 бронзовых знака
задан 30 июн 2016 в 15:01
125 2 2 серебряных знака 9 9 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
1 — НОД — наибольший общий делитель.
Алгоритм для поиска НОД 2 чисел известен, но приведу его ещё раз.
long long gcd(long long a,long long b) < while (a b) if (a >b) a%=b; else b%=a; return a+b; >
Тут используется допущение, что НОД(0,0)=0 , это часто удобно.
Теперь, чтобы найти НОД нескольких чисел, нужно последовательно брать НОД от них.
long long gcd(const vector if (num.size() == 0) return 0; if (num.size() == 1) return num[0]; long long res = gcd(num[0],num[1]); for (auto i=2;i
найти числа, при деление на которые все элементы множества дают одинаковый остаток.
Как найти НОД с помощью алгоритма Евклида в Python?
Есть разные варианты, как это сделать. НО идея у вас перебирать от 2 до НОД неправильная. Пример: 5 и 9 дают остаток 1 при делении на 4. Но НОД(5,9)=1.
Если в наборе более 1 числа (предполагаю что все числа различны) то количество таких делителей будет не больше чем минимальное из этих чисел. Но это долго.
Пусть x = a*p + r, y = b*p + r Тогда x-y = (b-a)*p И значит делится на p аналогично для остальных пар. Поэтому ответ — все делители от НОД разностей всех чисел (Их N^2, но все необязательны, достаточно между соседними или от 1 ко всем, всего N-1 штука).
Доказательство. Пусть G = gcd(delt) .
Тогда если x ≡ r (mod G). y = x + (y — x) => y = x + G*q => y ≡ r + G*q (mod G) => y ≡ r (mod G). Что и требовалось.
В обратную: для любых (x,y) x ≡ r (mod Q) y ≡ r (mod Q) G not | Q => x-y ≡ 0 (mod Q) => x-y делится на Q. Отсюда противоречие с тем что G — gcd();
Реализацию сами допишите.
Сложность — память O(n) или O(1) время O(n * log2(M) + sqrt(M) ) . где M — максимальное значение. sqrt(M) — факторизация ответа, можно и без неё алгоритмы найти легко.
Источник: ru.stackoverflow.com
Решение задач по математике онлайн
‘.$_COOKIE[’email’].’ Выход’ ); /*
#37. Алгоритм Евклида для нахождения НОД | Python для начинающих
‘ ); if ( isset($g_sVIPto) ) echo( ‘Дата окончания VIP статуса: ‘.$g_sVIPto.’ ‘ ); else echo( ‘VIP статуса нет. Как получить ?’ ); echo( ‘
‘ ); > else < // Если юзер НЕавторизованный : $redirect_uri = rawurlencode( ‘//www.math-solution.ru/parts/login.php?backUrl=’.$_SERVER[‘REQUEST_URI’] ); //
Вход:
Калькулятор онлайн.
Нахождение (вычисление) НОД и НОК
Наибольшим общим делителем (НОД) для двух целых чисел m и n называется наибольший из их общих делителей.
Пример: для чисел 6 и 9 наибольший общий делитель равен 3.
Наибольший общий делитель существует и однозначно определён, если хотя бы одно из чисел m или n не равно нулю.
В школьной программе обозначается так: НОД(m, n)
Понятие наибольшего общего делителя (НОД) распространяется на любой набор из более чем двух целых чисел. Чаще всего НОД используется для сокращения дроби — если найти НОД числителя и знаменателя, то на это число можно сократить числитель и знаменатель данной дроби.
Наименьшее общее кратное (НОК) двух целых чисел m и n это наименьшее натуральное число, которое делится на m и n без остатка. В школьной программе обозначается так: НОК(m, n)
Пример: НОК(16, 20) = 80
Одно из наиболее частых применений НОК — приведение дробей к общему знаменателю.
С помощью данной математической программы вы можете найти (вычислить) НОД и НОК двух целых чисел.
Программа нахождения НОД и НОК не только выводит ответ задачи, но и отображает процесс вычисления НОД и НОК двух чисел.
Вводить можно только целые положительные числа.
Найти НОД и НОК
Т.к. желающих решить задачу очень много, ваш запрос поставлен в очередь.
Через несколько секунд решение появится ниже.
Пожалуйста подождите сек.
Наши игры, головоломки, эмуляторы:
Игра «droneZone» —> 3D модели Создание острова Эмулятор
гравитации Игра «iChart» —> Головоломка «SumWaves»
Немного теории.
Наибольший общий делитель (НОД). Взаимно простые числа
Определение. Наибольшее натуральное число, на которое делятся без остатка числа а и b, называют наибольшим общим делителем (НОД) этих чисел.
Найдём наибольший общий делитель чисел 24 и 35.
Делителями 24 будут числа 1, 2, 3, 4, 6, 8, 12, 24, а делителями 35 будут числа 1, 5, 7, 35.
Видим, что числа 24 и 35 имеют только один общий делитель — число 1. Такие числа называют взаимно простыми.
Определение. Натуральные числа называют взаимно простыми, если их наибольший общий делитель (НОД) равен 1.
Наибольший общий делитель (НОД) можно найти, не выписывая всех делителей данных чисел.
Разложим на множители числа 48 и 36, получим:
48 = 2 * 2 * 2 * 2 * 3, 36 = 2 * 2 * 3 * 3.
Из множителей, входящих в разложение первого из этих чисел, вычеркнем те, которые не входят в разложение второго числа (т. е. две двойки).
Остаются множители 2 * 2 * 3. Их произведение равно 12. Это число и является наибольшим общим делителем чисел 48 и 36. Так же находят наибольший общий делитель трёх и более чисел.
Чтобы найти наибольший общий делитель нескольких натуральных чисел, надо:
1) разложить их на простые множители;
2) из множителей, входящих в разложение одного из этих чисел, вычеркнуть те, которые не входят в разложение других чисел;
3) найти произ ведение оставшихся множителей.
Если все данные числа делятся на одно из них, то это число и является наибольшим общим делителем данных чисел.
Например, наибольшим общим делителем чисел 15, 45, 75 и 180 будет число 15, так как на него делятся все остальные числа: 45, 75 и 180.
Наименьшее общее кратное (НОК)
Определение. Наименьшим общим кратным (НОК) натуральных чисел а и b называют наименьшее натуральное число, которое кратно и a и b. Наименьшее общее кратное (НОК) чисел 75 и 60 можно найти и не выписывая подряд кратные этих чисел. Для этого разложим 75 и 60 на простые множители: 75 = 3 * 5 * 5, а 60 = 2 * 2 * 3 * 5.
Выпишем множители, входящие в разложение первого из этих чисел, и добавим к ним недостающие множители 2 и 2 из разложения второго числа (т.е. объединяем множители).
Получаем пять множителей 2 * 2 * 3 * 5 * 5, произведение которых равно 300. Это число является наименьшим общим кратным чисел 75 и 60.
Так же находят наименьшее общее кратное для трёх и более чисел.
Чтобы найти наименьшее общее кратное нескольких натуральных чисел, надо:
1) разложить их на простые множители;
2) выписать множители, входящие в разложение одного из чисел;
3) добавить к ним недостающие множители из разложений остальных чисел;
4) найти произведение получившихся множителей.
Заметим, что если одно из данных чисел делится на все остальные числа, то это число и является наименьшим общим кратным данных чисел.
Например, наименьшим общим кратным чисел 12, 15, 20 и 60 будет число 60, так как оно делится на все данные числа.
Пифагор (VI в. до н. э.) и его ученики изучали вопрос о делимости чисел. Число, равное сумме всех его делителей (без самого числа), они называли совершенным числом. Например, числа 6 (6 = 1 + 2 + 3), 28 (28 = 1 + 2 + 4 + 7 + 14) совершенные. Следующие совершенные числа — 496, 8128, 33 550 336. Пифагорейцы знали только первые три совершенных числа.
Четвёртое — 8128 — стало известно в I в. н. э. Пятое — 33 550 336 — было найдено в XV в. К 1983 г. было известно уже 27 совершенных чисел. Но до сих пор учёные не знают, есть ли нечётные совершенные числа, есть ли самое большое совершенное число.
Интерес древних математиков к простым числам связан с тем, что любое число либо простое, либо может быть представлено в виде произведения простых чисел, т. е. простые числа — это как бы кирпичики, из которых строятся остальные натуральные числа.
Вы, наверное, обратили внимание, что простые числа в ряду натуральных чисел встречаются неравномерно — в одних частях ряда их больше, в других — меньше. Но чем дальше мы продвигаемся по числовому ряду, тем реже встречаются простые числа. Возникает вопрос: существует ли последнее (самое большое) простое число? Древнегреческий математик Евклид (III в. до н. э.) в своей книге «начала», бывшей на протяжении двух тысяч лет основным учебником математики, доказал, что простых чисел бесконечно много, т. е. за каждым простым числом есть ещё большее простое число.
Для отыскания простых чисел другой греческий математик того же времени Эратосфен придумал такой способ. Он записывал все числа от 1 до какого-то числа, а потом вычёркивал единицу, которая не является ни простым, ни составным числом, затем вычёркивал через одно все числа, идущие после 2 (числа, кратные 2, т. е. 4, 6, 8 и т. д.). Первым оставшимся числом после 2 было 3. Далее вычёркивались через два все числа, идущие после 3 (числа, кратные 3, т. е. 6, 9, 12 и т. д.). в конце концов оставались невычеркнутыми только простые числа.
Вы вошли как
Выход Вход
Источник: www.math-solution.ru
НОД и НОК чисел — наибольший общий делитель и наименьшее общее кратное нескольких чисел
Онлайн калькулятор позволяет быстро находить наибольший общий делитель и наименьшее общее кратное как для двух, так и для любого другого количества чисел.
Калькулятор для нахождения НОД и НОК
Найти НОД и НОК
Найдено НОД и НОК:
Как пользоваться калькулятором
- Введите числа в поле для ввода
- В случае ввода некорректных символов поле для ввода будет подсвечено красным
- нажмите кнопку «Найти НОД и НОК»
Как вводить числа
- Числа вводятся через пробел, точку или запятую
- Длина вводимых чисел не ограничена, так что найти НОД и НОК длинных чисел не составит никакого труда
Что такое НОД и НОК?
Наибольший общий делитель нескольких чисел – это наибольшее натуральное целое число, на которое все исходные числа делятся без остатка. Наибольший общий делитель сокращённо записывается как НОД.
Наименьшее общее кратное нескольких чисел – это наименьшее число, которое делится на каждое из исходных чисел без остатка. Наименьшее общее кратное сокращённо записывается как НОК.
Как проверить, что число делится на другое число без остатка?
Чтобы узнать, делится ли одно число на другое без остатка, можно воспользоваться некоторыми свойствами делимости чисел. Тогда, комбинируя их, можно проверять делимость на некоторые их них и их комбинации.
Некоторые признаки делимости чисел
1. Признак делимости числа на 2
Чтобы определить, делится ли число на два (является ли оно чётным), достаточно посмотреть на последнююю цифру этого числа: если она равна 0, 2, 4, 6 или 8, то число чётно, а значит делится на 2.
Пример: определить, делится ли на 2 число 34938 .
Решение: смотрим на последнюю цифру: 8 — значит число делится на два.
2. Признак делимости числа на 3
Число делится на 3 тогда, когда сумма его цифр делится на три. Таким образом, чтобы определить, делится ли число на 3, нужно посчитать сумму цифр и проверить, делится ли она на 3. Даже если сумма цифр получилась очень большой, можно повторить этот же процесс вновь.
Пример: определить, делится ли число 34938 на 3.
Решение: считаем сумму цифр: 3+4+9+3+8 = 27. 27 делится на 3, а значит и число делится на три.
3. Признак делимости числа на 5
Число делится на 5 тогда, когда его последняя цифра равна нулю или пяти.
Пример: определить, делится ли число 34938 на 5.
Решение: смотрим на последнюю цифру: 8 — значит число НЕ делится на пять.
4. Признак делимости числа на 9
Этот признак очень похож на признак делимости на тройку: число делится на 9 тогда, когда сумма его цифр делится на 9.
Пример: определить, делится ли число 34938 на 9.
Решение: считаем сумму цифр: 3+4+9+3+8 = 27. 27 делится на 9, а значит и число делится на девять.
Как найти НОД и НОК двух чисел
Как найти НОД двух чисел
Наиболее простым способом вычисления наибольшего общего делителя двух чисел является поиск всех возможных делителей этих чисел и выбор наибольшего из них.
Рассмотрим этот способ на примере нахождения НОД(28, 36) :
- Раскладываем оба числа на множители: 28 = 1·2·2·7 , 36 = 1·2·2·3·3
- Находим общие множители, то есть те, которые есть у обоих чисел: 1, 2 и 2.
- Вычисляем произведение этих множителей: 1·2·2 = 4 — это и есть наибольший общий делитель чисел 28 и 36.
Как найти НОК двух чисел
Наиболее распространены два способа нахождения наименьшего кратного двух чисел. Первый способ заключается в том, что можно выписать первые кратные двух чисел, а затем выбрать среди них такое число, которое будет общим для обоих чисел и при этом наименьшем. А второй заключается в нахождении НОД этих чисел. Рассмотрим только его.
Для вычисления НОК нужно вычислить произведение исходных чисел и затем разделить его на предварительно найденный НОД. Найдём НОК для тех же чисел 28 и 36:
- Находим произведение чисел 28 и 36: 28·36 = 1008
- НОД(28, 36), как уже известно, равен 4
- НОК(28, 36) = 1008 / 4 = 252 .
Нахождение НОД и НОК для нескольких чисел
Наибольший общий делитель можно находить и для нескольких чисел, а не только для двух. Для этого числа, подлежащие поиску наибольшего общего делителя, раскладывают на простые множители, затем находят произведение общих простых множителей этих чисел. Также для нахождение НОД нескольких чисел можно воспользоваться следующим соотношением: НОД(a, b, c) = НОД(НОД(a, b), c).
Аналогичное соотношение действует и для наименьшего общего кратного чисел: НОК(a, b, c) = НОК(НОК(a, b), c)
Пример: найти НОД и НОК для чисел 12, 32 и 36.
- Cперва разложим числа на множители: 12 = 1·2·2·3 , 32 = 1·2·2·2·2·2 , 36 = 1·2·2·3·3 .
- Найдём обшие множители: 1, 2 и 2 .
- Их произведение даст НОД: 1·2·2 = 4
- Найдём теперь НОК: для этого найдём сначала НОК(12, 32): 12·32 / 4 = 96 .
- Чтобы найти НОК всех трёх чисел, нужно найти НОД(96, 36): 96 = 1·2·2·2·2·2·3 , 36 = 1·2·2·3·3 , НОД = 1·2·2·3 = 12 .
- НОК(12, 32, 36) = 96·36 / 12 = 288 .
Источник: programforyou.ru