- Как узнать кратность числа?
- Нахождение НОК и НОД в Python — примеры
- НОК: наименьшее общее кратное
- НОД: наибольший общий делитель
- Вывод всех чисел, кратных определенному числу, в заданном диапазоне
- Решение задачи
- Исходный код
- Объяснение работы программы
- Результаты работы программы
- Вычислить НОК двух чисел
- Решение
- Наименьшее общее кратное
Как узнать кратность числа?
Катя узнала, что ей для сна надо XX минут. В отличие от Коли, Катя ложится спать после полуночи в HH часов и MM минут. Помогите Кате определить, на какое время ей поставить будильник, чтобы он прозвенел ровно через XX минут после того, как она ляжет спать.
На стандартный ввод, каждое в своей строке, подаются значения XX, HH и MM. Гарантируется, что Катя должна проснуться в тот же день, что и заснуть. Программа должна выводить время, на которое нужно поставить будильник: в первой строке часы, во второй — минуты.
x = int(input("введите кол-во минут ")) h = int(input("введите время ")) m = int(input("введите минуты ")) print (int(((x)+m)/60 + h)) print (int(x%60-60+m)) if (x/60=float()) then (print( m ))
Нахождение НОК и НОД в Python — примеры
В данном уроке мы узнаем, как найти наименьшее общее кратное (НОК) и наибольший общий делитель (НОД) с помощью языка программирования Python.
Но прежде чем мы начнем, давайте разберем, что обозначает Least Common Multiple (LCM) — наименьшее общее кратное.
НОК: наименьшее общее кратное
Это понятие арифметики и системы счисления. НОК двух целых чисел a и b обозначается НОК(a,b). Это наименьшее натуральное число, которое делится и на «а», и на «b».
Например: у нас есть два целых числа 4 и 6. Найдем НОК:
4, 8, 12, 16, 20, 24, 28, 32, 36. and so on.
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, и цикл продолжается.
НОД: наибольший общий делитель
В этом разделе мы разберем, как найти Highest Common Factor (HCF) — наибольший общий делитель (НОД) в языке программирования Python.
Наибольший общий делитель двух или более целых чисел, когда хотя бы одно из них не равно нулю, является наибольшим положительным целым числом, которое без остатка делит целые числа. Например, НОД 8 и 12 равен 4.
У нас есть два целых числа 8 и 12. Найдем наибольший общий делитель.
Теперь давайте рассмотрим пример, основанный на нахождении НОД двух заданных чисел.
# defining a function to calculate HCF def calculate_hcf(x, y): # selecting the smaller number if x > y: smaller = y else: smaller = x for i in range(1,smaller + 1): if((x % i == 0) and(y % i == 0)): hcf = i return hcf # taking input from users num1 = int(input("Enter first number: ")) num2 = int(input("Enter second number: ")) # printing the result for the users print("The H.C.F. of", num1,"and", num2,"is", calculate_hcf(num1, num2))
Enter first number: 8 Enter second number: 12 The H.C.F. of 8 and 12 is 4
В приведенном выше фрагменте кода два целых числа, хранящиеся в переменных num1 и num2, передаются в функцию calculate_hcf(). Функция вычисляет НОД для этих двух чисел и возвращает его.
Внутри функции мы должны определить меньшее число, поскольку НОД может быть меньше или равен наименьшему числу. Затем мы использовали цикл for, чтобы перейти от 1 к этому числу.
На каждой итерации мы должны проверять, точно ли число делит оба входных числа. Если это так, мы должны сохранить число как НОД. По завершении цикла мы получаем наибольшее число, которое идеально делит оба числа.
Вывод всех чисел, кратных определенному числу, в заданном диапазоне
Данная программа должна вывести все числа в заданном диапазоне, которые делились бы без остатка на определенное число.
Решение задачи
- На вход принимаются два числа, которые задают диапазон и записываются в разные переменные.
- Также принимается число, которое будет делителем.
- Используем цикл for , чтобы пройтись по всему диапазону и проверить все числа на кратность. Выводим только те числа, которые делятся на заданное число без остатка.
- Конец.
Исходный код
Ниже дан исходный код для вывода всех чисел из заданного диапазона, которые удовлетворяют условию делимости на данное число. Результаты работы программы также даны ниже.
lower = int(input("Введите нижнюю границу диапазона:")) upper = int(input("Введите верхнюю границу диапазона:")) n = int(input("Введите делитель:")) for i in range(lower, upper + 1): if(i % n == 0): print(i)
Объяснение работы программы
- Пользователь вводит два числа, нижнюю и верхнюю границы. Они записываются в отдельные переменные.
- Далее пользователь вводит число, которое будет делителем. Оно также сохраняется в своей переменной.
- Значение переменной цикла for варьируется от нижней до верхней границы с шагом 1.
- В процессе работы цикла проверяется, равен ли остаток от деления нулю. Если остаток равен нулю, делимое выводится на экран.
- Конец.
Результаты работы программы
Пример 1: Введите нижнюю границу диапазона:1 Введите верхнюю границу диапазона:50 Введите делитель:5 5 10 15 20 25 30 35 40 45 50 Пример 2: Введите нижнюю границу диапазона:50 Введите верхнюю границу диапазона:100 Введите делитель:7 56 63 70 77 84 91 98
Вычислить НОК двух чисел
Наименьшее общее кратное (НОК) двух натуральных чисел – это наименьшее число, которое делится нацело на оба исходных числа. Напишите программу, которая вычисляет НОК двух чисел. Используйте функцию.
Входные данные
Входная строка содержит два натуральных числа, разделённые пробелом – a и b .
Выходные данные
Программа должна вывести одно натуральное число: НОК заданных чисел.
Нод и Нок двух чисел
пользователь вводит числа х и у нужно найти: наибольшее натуральное число, на которое у и х.
Найти НОК двух чисел
нужно найти наименьшее общее кратное чисел m и n в чем ошибка?m = int(input(‘m=’)) n =.
Найти НОК двух чисел, записанных в файле через запятую
нужно найти НОК двух чисел. Числа записаны в файле через запятую,
Наибольший общий делитель (НОД) и наименьшее общее кратное (НОК) двух натуральных чисел
Здравствуйте, не могу решить эти две задачи в питоне, помогите пожалуйста, необходимо: Составить.
Сообщение было отмечено mik-a-el как решение
Решение
a, b = 7, 5 i = min(a, b) while True: if i%a==0 and i%b==0: break i += 1 print(i)
def gcd(a,b): if b == 0: return a return gcd(b, a%b) a, b = map(int, input().split()) print(a*b//gcd(a,b))
a, b = sorted(map(int, input().split(maxsplit=1))) p, q = a, b while p: p, q = q % p, p print(a * b // q)
А вот как эта программа выглядит на языке APL:
Сообщение от Вадим Тукаев
Сообщение от Catstail
Одна из особенностей подхода APL, точнее особенность мышления его создателей — это максимальная абстрактность, высокоуровневость, многофункциональность. Это позволяет выразить небольшим количеством функций очень много. Маленький пример. Возьмём три разные задачи: декодировать IP-адрес, перевести число в другую систему счисления, перевести количество секунд в часы, минуты, секунды. Обычный программист (как «обычный порошок» в рекламе) сделает три отдельные функции. Но если присмотреться, это одна и та же задача! Более того, такой оператор в APL уже встроен.
256 256 256 256⊤2130706433 127 0 0 1 2 2 2 2⊤10 1 0 1 0 24 60 60⊤10000 2 46 40
Так вот, в той программе из трёх символов «квадратик» — это ввод данных. А вот крышечка между ними — это же обычная конъюнкция! Точнее, это наибольшее общее кратное, но если применять его к числам 0 и 1, то получится конъюнкция. А дизъюнкция, соответственно — это частный случай наименьшего общего множителя для чисел 0 и 1. Так что, отвечая на Ваш вопрос, это не вызов библиотечной функции, это стандартный оператор этого языка. По-моему, это невероятно красиво!
0∨0 0 0∨1 1 1∨0 1 1∨1 1 25∨60 5
Кстати, в Python всё очень похоже.
from math import gcd for a, b in (0, 0), (0, 1), (1, 0), (1, 1), (25, 60): print("<>v<> = <>".format(a, b, gcd(a, b)))
Сообщение от Вадим Тукаев
Сообщение от Catstail
Все операторы в APL имеют одинаковый приоритет и правую ассоциативность. Например, 3×2+1 = 3×(2+1) = 9.
Вообще, язык APL — уникальное явление. Все языки являются компромиссом между, если так можно выразиться, человекочитаемостью и машиночитаемостью. APL изначально рассматривался как новая математическая нотация, взамен старой, перегруженной такими понятиями, как приоритет, ассоциативность и прочее. Не говоря уж о том, что разные значки пишутся то под другими, то над другими, то ещё как. Никакого единообразия. Вот APL и стремился привнести простоту и единообразие. Эдакий математический эсперанто. Именно поэтому первый интерпретатор APL делали очень долго, кажется четыре года. Долгое время APL существовал лишь на бумаге, и пользовались им на бумаге, как средством для записи идей программ, а не самих программ. IBM/360 был спроектирован именно на APL. В принципе, его и сейчас можно для этого использовать, вместо опостылевших, бесполезных блок-схем, которыми самая простая программа рисуется на листе A3. А в APL — наоборот, очень сложные идеи выражаются коротко. Парадокс заключается в том, что язык настолько опередил своё время, что к тому моменту, когда он понадобился (а он принципиально многопоточный!), его успели забыть.
Наименьшее общее кратное
где a и b — это натуральные числа, НОД — наибольший общий делитель.
Решение задачи на языке программирования Python
Из условия задачи ясно, чтобы найти НОК, надо сначала найти НОД. Последний можно вычислить, постепенно находя остаток от деления большего числа из пары на меньшее и присваивая остаток переменной, связанной с большим числом (см. алгоритм Евклида). В какой-то момент значение одной из переменных станет равным 0. Когда это произойдет, другая будет содержать НОД. Если неизвестно, какая именно переменная содержит НОД, то можно просто сложить значения обоих переменных.
В коде ниже используется функция для нахождения НОК, которая принимает два числа и возвращает найденное наименьшее общее кратное.
В основной ветке программы функция вызывается в цикле, который завершается, если то, что было введено, нельзя преобразовать к целому. В этом случае генерируется исключение и поток выполнения переходит к ветке except .
def lcm(a, b): m = a * b while a != 0 and b != 0: if a > b: a %= b else: b %= a return m // (a + b) while 1: try: x = int(input('a = ')) y = int(input('b = ')) print('НОК:', lcm(x, y)) except ValueError: break
a = 14 b = 18 НОК: 126 a = 105 b = 305 НОК: 6405 a = stop
В модуле math языка программирования Python есть функция для нахождения наибольшего общего делителя ( gcd — greatest common devisor). При ее использовании наша функция вычисления наименьшего общего кратного lcm (least common multiple) упрощается.
def lcm(a, b): import math return (a * b) // math.gcd(a, b)