2013-05-28 2 views
0

Определенная функция, которая находит стандартную дробную нотацию версии данной египетской фракции.Уравнение египетской фракции в Python

Например:

input: 3, 15 
output: 2/5 

объяснил для тех, кто не знаком с египетскими фракций:

(1/3 + 1/15) = 18/45 = 2/5 

Какие уравнения могли бы сделать это? если не уравнение, то какой набор операций?

ответ

1

Это больше похоже на вопрос по математике, чем вопрос Python, но я дам вам несколько советов:

  1. разделить свой вклад в токенов (str.split)
  2. разобрать ваши жетоны целых (int(x))
  3. применить формулу для добавления фракций
  4. новообращенного irreductible фракции (деление на НОД, вы можете использовать метод Евклида)
  5. прибыль

для добавления фракций: a/b + c/d = (ad+cb)/bd как a и c являются 1, упрощать (d+b)/db

или гляньте на this, если вы чувствуете, ленивые о добавлении и сокращения фракций

2
from fractions import Fraction 

def egyptian(a, b): 
    frac = (Fraction(1.0/a) + Fraction(1.0/b)).limit_denominator() 
    return frac.numerator, frac.denominator 

egyptian(3, 15) 
>>> (2L, 5L)