Наименьшее общее кратное для 3 или больше чисел

Это мое решение:

import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;

public class GenericClass<T extends String> {

  public static void main(String[] args) {
     for (TypeVariable typeParam : GenericClass.class.getTypeParameters()) {
      System.out.println(typeParam.getName());
      for (Type bound : typeParam.getBounds()) {
         System.out.println(bound);
      }
    }
  }
}
141
задан Kip 19 January 2009 в 05:26
поделиться

4 ответа

Можно вычислить LCM больше чем двух чисел путем повторяющихся вычислений LCM двух чисел, т.е.

lcm(a,b,c) = lcm(a,lcm(b,c))
171
ответ дан 23 November 2019 в 23:08
поделиться

В Python (изменил primes.py):

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)

Использование:

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

reduce() работы что-то как , что :

>>> f = lambda a,b: "f(%s,%s)" % (a,b)
>>> print reduce(f, "abcd")
f(f(f(a,b),c),d)
143
ответ дан 23 November 2019 в 23:08
поделиться

Я просто понял это в Haskell:

lcm' :: Integral a => a -> a -> a
lcm' a b = a`div`(gcd a b) * b
lcm :: Integral a => [a] -> a
lcm (n:ns) = foldr lcm' n ns

Я даже потратил время, чтобы написать свою функцию GCD , только чтобы найти его в прелюдии! Много обучения для меня сегодня: D

6
ответ дан 23 November 2019 в 23:08
поделиться

Вот реализация в стиле ECMA:

function gcd(a, b){
    // Euclidean algorithm
    var t;
    while (b != 0){
        t = b;
        b = a % b;
        a = t;
    }
    return a;
}

function lcm(a, b){
    return (a * b / gcd(a, b));
}

function lcmm(args){
    // Recursively iterate through pairs of arguments
    // i.e. lcm(args[0], lcm(args[1], lcm(args[2], args[3])))

    if(args.length == 2){
        return lcm(args[0], args[1]);
    } else {
        var arg0 = args[0];
        args.shift();
        return lcm(arg0, lcmm(args));
    }
}
24
ответ дан 23 November 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: