Напишите функцию которая сокращает дробь вида m n python
Перейти к содержимому

Напишите функцию которая сокращает дробь вида m n python

  • автор:

Name already in use

python_lessons / python_coursera / 4_week / 58_Сократите дробь.py /

  • Go to file T
  • Go to line L
  • Go to definition R
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Как правильно сократить дробь n/m, используя алгоритм Евклида?

Что делать, что мой код упрощает дроби не совсем так? То есть при вводе 16 6 он упрощает до 4 1. А надо до 8 3?

Kromster's user avatar

НОД(a, b) вычисляется алгоритмом Евклида

Ну НОД можно реализовать например так:

Zhihar's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43310

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Напишите функцию которая сокращает дробь вида m n python

a = int(input())
b = int(input())

def ReduceFraction(a, b):
while a != b:
if a > b:
a = a — b
else:
b = b — a
return (a)

p = a // ReduceFraction(a, b)
q = b // ReduceFraction(a, b)
print(p, q)

def ReduceFraction(n, m):

def gdc (a, b) :
while a%b: a, b = b, a%b
return b

g = gdc(n, m)
return n / g, m / g

a = int(input())
b = int(input())

def ReduceFraction(a, b):
def gdc(a, b):
while a % b != 0:
a, b = b, a % b
return b

g = gdc(a, b)
return int(a / g), int(b / g)

Test 1
input:
12
16
Wrong answer.
correct output:
3 4

李西青 Просветленный (42559) значит алгоритм нужно править
Программка может быть тупая, но тем не менее: (можно написать: for i in range(min(a,b),1,-1): . а 2 строки выше удалить)

Юрий Моисеев Оракул (83276) Я в Питоне новичок, повозился и получилось вот так:

Есть ли в Python функция сокращения дробей?

Например, когда я вычисляю 98/42 я хочу получить 7/3 , Не 2.3333333 , есть ли функция для использования Python или Numpy ?

задан 09 июля ’13, 00:07

2 ответы

Компания fractions модуль может это сделать

Рецепт закончился здесь для numpy gcd. Который вы могли бы затем использовать, чтобы разделить свою фракцию

ответ дан 23 мая ’17, 12:05

Спасибо! Работает отлично! Входное значение должно быть целым числом, не может быть с плавающей запятой. — ЛВЗ

@LWZ Вы должны иметь возможность использовать числа с плавающей запятой как другие дроби — Натан

Дополнение к ответу Джона:

Чтобы получить упрощенную дробь из десятичного числа (например, 2.0372856077554062)

Использование Fraction дает следующий результат:

Чтобы получить упрощенный ответ :

Спасибо, теперь я использую это по умолчанию: даже в простых случаях Fraction иногда не дает простых ответов (1.8 дает 8106479329266893/4503599627370496 вместо 9/5). — Энтони Лабарр

@AnthonyLabarre Это может выглядеть как «простой случай», но 1.8 не может быть точно выражено как двоичное число; т. е. целое число, деленное на степень 2. Следовательно, оно не может быть представлено точно как число с плавающей запятой. Обходной путь — использовать строку вместо числа с плавающей запятой: сравните Fraction(1.8) —> Fraction(8106479329266893, 4503599627370496) с Fraction(«1.8») —> Fraction(9, 5) . Обратите внимание, что знаменатель 4503599627370496 равен 2**52. — Стеф

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками python python-2.7 numpy numerical fractions or задайте свой вопрос.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *