Python нод для 3 чисел

Нахождение НОД нескольких чисел на Python

Всем привет! Занимаюсь изучением языка Python. Никак не могу решить задачу с академии яндекса по нахождению НОДа нескольких чисел :(. Задача из раздела «Вложенные Циклы». Суть заключается в следующем:

«В одном из местных НИИ часто требуется находить наибольший общий делитель (НОД) нескольких чисел. Вам уже доверяют, так что вновь пришли с этой задачей. Формат ввода В первой строке записано одно число NN — количество данных. В каждой из последующих NN строк записано по одному натуральному числу. Формат вывода Требуется вывести одно натуральное число — НОД всех данных чисел (кроме NN)»

Но, решить надо, как я понял, без использования списков, словарей, готовых функций (типа math.gcd()) и т.д., т.к. тема вложенные циклы идет после тем: Ввод и вывод данных. Операции с числами, строками. Форматирование Условный оператор Циклы. Т.е. предполагается, что я владею только перечисленными выше темами.

Даже не знаю с какой стороны подойти. Конечно, можно использовать уже готовую функцию math.gcd(), но очень хочется понять алгоритм решения. Спасибо всем откликнувшимся ☻

Ответы (1 шт):

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

n = int(input()) # вводим сколько будет чисел second_number = 0 # второе число для расчета НОДа на первом цикле for i in range(1, n + 1): first_number = int(input()) # Ищем НОД по алгоритму Евклида (делением) while first_number != 0 and second_number != 0: if first_number > second_number: first_number %= second_number else: second_number %= first_number # Перезаписываем вторую переменную num2 НОДом. # На следующем цикле будем искать НОД нового введенного числа и полученного НОД second_number += first_number print(second_number) 
 from functools import reduce def gcd_multiple(num1, num2): ''' Функция считает НОД num1 и num2 по Алгоритму Евклида (делением) Параметры: num1 - первое число num2 - второе число Return: НОД чисел num1 и num2 ''' while num1 != 0 and num2 != 0: if num1 > num2: num1 %= num2 else: num2 %= num1 return num1 + num2 n = int(input()) # вводим сколько будет чисел list_num = [] # в этот список будем добавлять числа, введенные пользователем count_num = 0 # счетчик для выхода из цикла, когда закончатся числа for i in range(n): num = int(input()) list_num.append(num) while count_num < len(list_num): gcd_multiple_result = reduce(gcd_multiple, list_num) count_num += 1 print(gcd_multiple_result) 

Источник

Читайте также:  Robot framework with java

Функция: нахождения НОД трех чисел

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

Составить программу нахождения произведения двух наименьших из трех различных чисел
Здравствуйте, помогите пожалуйста с задачей питоне Составить программу нахождения произведения.

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

Лучший ответ

Сообщение было отмечено mik-a-el как решение

Решение

def gcd(a, b, c = None): return ((a if b == 0 else gcd(b, a % b)) if c is None else gcd(gcd(a, b), gcd(a, c))) if __name__ == "__main__": a, b, c = (int(input()) for i in range(3)) print(gcd(a, b, c))

Источник

Найти НОД трех чисел

Учитывая соотношениеНОД(А, В, С) =НОД(НОД(А, В), С) иисполь- зуя функциюNOD2 из задания Proc46, описать функциюNOD3(A, B, C) целого типа, находящую наибольший общий делитель трех целых положительных чисел А, В, С. С помощью этой функции найти наибольшие общие делители троек (А,В,С), (A,C,D) и (B,C,D), если даны числа А, B, C, D.

Функция: нахождения НОД трех чисел
Записати програму нахождения НОД трех чисел.

Найти размер наибольшего подмножества списка чисел, такого что НОД чисел в подмножестве строго больше единицы
Написано n натуральных чисел a1, a2, . . . , an.Нужно найти размер наибольшего подмножества этих.

Найти нод для списка чисел
ну я пытался что-то придумать, но у меня бред кокой-то

Найти пары чисел в последовательности у которых НОД равен НОК
Почему в интерпретаторе работает, а на сайте нет? Дано число n – количество чисел. В следующей.

Если сумма трех попарно различных действительных чисел х, у , z меньше единицы, то наименьшее из этих трех чисел заменит
Если сумма трех попарно различных действительных чисел х, у , z меньше единицы, то наименьшее из.

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

Найти максимальное из трёх чисел с помощью функции
Найти максимальное из трёх чисел a, b и c. Определить функцию поиска большего из двух чисел.

Линейный алгоритм: найти минимум и максимум из трех чисел
даны три числа а,b,c.найти max и min этих чисел.

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

Найти сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры
Всем привет. На курсе попалось такое простецкое задание Напишите программу, которая находит.

Источник

Найти НОД трех чисел

Учитывая соотношениеНОД(А, В, С) =НОД(НОД(А, В), С) иисполь- зуя функциюNOD2 из задания Proc46, описать функциюNOD3(A, B, C) целого типа, находящую наибольший общий делитель трех целых положительных чисел А, В, С. С помощью этой функции найти наибольшие общие делители троек (А,В,С), (A,C,D) и (B,C,D), если даны числа А, B, C, D.

Читайте также:  Php получить переменную из массива

Функция: нахождения НОД трех чисел
Записати програму нахождения НОД трех чисел.

Найти размер наибольшего подмножества списка чисел, такого что НОД чисел в подмножестве строго больше единицы
Написано n натуральных чисел a1, a2, . . . , an.Нужно найти размер наибольшего подмножества этих.

Найти нод для списка чисел
ну я пытался что-то придумать, но у меня бред кокой-то

Найти пары чисел в последовательности у которых НОД равен НОК
Почему в интерпретаторе работает, а на сайте нет? Дано число n – количество чисел. В следующей.

Если сумма трех попарно различных действительных чисел х, у , z меньше единицы, то наименьшее из этих трех чисел заменит
Если сумма трех попарно различных действительных чисел х, у , z меньше единицы, то наименьшее из.

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

Найти максимальное из трёх чисел с помощью функции
Найти максимальное из трёх чисел a, b и c. Определить функцию поиска большего из двух чисел.

Линейный алгоритм: найти минимум и максимум из трех чисел
даны три числа а,b,c.найти max и min этих чисел.

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

Найти сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры
Всем привет. На курсе попалось такое простецкое задание Напишите программу, которая находит.

Источник

Вычислите и получите наибольший общий делитель и наименьшее общее кратное в Python

From-Locals

Ниже описано, как вычислить и получить наибольший общий делитель и наименьшее общее кратное в Python.

  • Наибольший общий делитель и наименьшее общее кратное двух целых чисел
  • Наибольший общий делитель и наименьшее общее кратное трех или более целых чисел

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

  • Python 3.4 или более ранняя версия
    • GCD : fractions.gcd() (только два аргумента)
    • GCD : math.gcd() (только два аргумента)
    • GCD : math.gcd() (поддерживает более трех аргументов)
    • наименьший общий знаменатель : math.lcm() (поддерживает более трех аргументов)

    Здесь мы объясним метод с использованием стандартной библиотеки Python; NumPy можно легко использовать для вычисления наибольшего общего делителя и наименьшего общего кратного для каждого элемента нескольких массивов.

    Наибольший общий делитель и наименьшее общее кратное двух целых чисел

    GCD

    Начиная с Python 3.5, в математическом модуле появилась функция gcd(). gcd() — это аббревиатура, означающая

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

    import math print(math.gcd(6, 4)) # 2 

    Обратите внимание, что в Python 3.4 и более ранних версиях функция gcd() находится в модуле fractions, а не в модуле math. fractions должен быть импортирован и fractions.gcd().

    наименьший общий знаменатель

    Функция lcm(), которая возвращает наименьшее общее кратное, была добавлена в математический модуль в Python 3.9. lcm — это аббревиатура для

    Возвращает наименьшее общее кратное целого числа, указанного в аргументе.

    До версии Python 3.8 функция lcm() не предоставлялась, но ее можно легко вычислить с помощью gcd().

    def my_lcm(x, y): return (x * y) // math.gcd(x, y) print(my_lcm(6, 4)) # 12 

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

    Наибольший общий делитель и наименьшее общее кратное трех или более целых чисел

    Python 3.9 или более поздняя версия

    Начиная с Python 3.9, все следующие функции поддерживают более трех аргументов.

    print(math.gcd(27, 18, 9)) # 9 print(math.gcd(27, 18, 9, 3)) # 3 print(math.lcm(27, 9, 3)) # 27 print(math.lcm(27, 18, 9, 3)) # 54 

    * Если вы хотите вычислить наибольший общий делитель или наименьшее общее кратное элементов списка, укажите аргумент this.

    l = [27, 18, 9, 3] print(math.gcd(*l)) # 3 print(math.lcm(*l)) # 54 

    Python 3.8 или более ранняя версия

    До версии Python 3.8 функция gcd() поддерживала только два аргумента.

    Чтобы найти наибольший общий делитель или наименьшее общее кратное трех или более целых чисел, не требуется особенно сложного алгоритма; достаточно вычислить наибольший общий делитель или наименьшее общее кратное для каждого из кратных значений по очереди с помощью функции высшего порядка reduce().

    GCD

    from functools import reduce def my_gcd(*numbers): return reduce(math.gcd, numbers) print(my_gcd(27, 18, 9)) # 9 print(my_gcd(27, 18, 9, 3)) # 3 l = [27, 18, 9, 3] print(my_gcd(*l)) # 3 

    Опять же, обратите внимание, что до Python 3.4 функция gcd() находилась в модуле fraction, а не в модуле math.

    наименьший общий знаменатель

    def my_lcm_base(x, y): return (x * y) // math.gcd(x, y) def my_lcm(*numbers): return reduce(my_lcm_base, numbers, 1) print(my_lcm(27, 9, 3)) # 27 print(my_lcm(27, 18, 9, 3)) # 54 l = [27, 18, 9, 3] print(my_lcm(*l)) # 54 

    Источник

Оцените статью