SORU
29 EYLÜL 2008, PAZARTESİ


3 veya daha fazla sayı için ortak katların en küçüğü

Ne kadar çok sayı olarak en çok hesaplarsınız?

Şimdiye kadar sadece iki sayı arasında hesaplamak için başaramadım. Ama 3 veya daha fazla sayı hesaplamak için genişletmek için nasıl hiçbir fikrim yok.

Şimdiye kadar bunu yaptım

LCM = num1 * num2 /  gcd ( num1 , num2 )

Gcd ile bu sayı için en büyük ortak bölen hesaplamak için işlev. Öklid algoritması kullanarak

Ama 3 veya daha fazla sayı için bunu hesaplamak için nasıl çözemiyorum.

CEVAP
29 EYLÜL 2008, PAZARTESİ


Python (primes.py değiştirilmiş):

def gcd(a, b):
    """Return greatest common divisor using Euclid's Algorithm."""
    while b:      
        a, b = b, a % b
    return a

def lcm(a, b):
    """Return lowest common multiple."""
    return a * b // gcd(a, b)

def lcmm(*args):
    """Return lcm of args."""   
    return reduce(lcm, args)

Kullanımı:

>>> lcmm(100, 23, 98)
112700
>>> lcmm(*range(1, 20))
232792560

reduce() that gibi bir şey çalışır:

>>> f = lambda a,b: "f(%s,%s)" % (a,b)
>>> print reduce(f, "abcd")
f(f(f(a,b),c),d)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • Plugable

    Plugable

    19 Mayıs 2010
  • The White House

    The White Ho

    21 Ocak 2006