programmer-最大公倍数と最小公倍数


問題の説明


2つの数を入力し、2つの数の最大公約数と最小公約数の関数を返し、解を完了します.アレイの先頭にある最大公約数、次に最小公約数を返します.例えば、2つの数3および12の最大承諾数は3であり、最小公倍数は12であるため、ソリューション(3、12)は[3、12]を返さなければならない.

せいげんじょうけん


2つの数は1以上1000000以下の自然数です.

I/O例説明


I/O例#1
上記のように.
I/O例#2
自然数2と5の最大承諾数が1であり、最小公倍数が10であるため、[1,10]を返さなければならない.
function solution(n, m) {
    let answer = [];
    let min;
    let max;
    let i;
    let a = 2;
    
    function aliquot(number){
        let arr = [];
        i = number;
        while(i >= 0){
            if( number % i === 0){
                arr.push(i);
            }
            i--;
        }
        
        return arr;
    }
    
    if(m >= n){
        if( m % n === 0){
            min = m;
        }else{
            while(a){
                if( (m * a) % n === 0){
                    min = m * a;
                    break;
                }
                a++;
            }
        }
        
        for( let j = 0; j < aliquot(n).length; j++){
            if( m % aliquot(n)[j] === 0){
                max = aliquot(n)[j];
                break;
            }
        }
    }else{
        if( n % m === 0){
            min = n;
        }else{
            while(a){
                if( (m * a) % n === 0){
                    min = m * a;
                    break;
                }
                a++;
            }
        }
        
        for( let j = 0; j < aliquot(m).length; j++){
            if( n % aliquot(m)[j] === 0){
                max = aliquot(m)[j];
                break;
            }
        }
    }
    

    return [max, min];
}
ああ...一度で解決できると思っていたが、明らかに混乱していた.
function solution(n, m) {
    const gcd = (m, n) => {
      let r = (m % n);
      return (r) ? gcd(n, r) : n;
    }
    return [gcd(m, n), ((m * n) / gcd(m, n))];
}
def solution(n, m):
    mini = min(n, m)
    print(mini)
    li = []
    
    for i in range(1, mini + 1):
        if (n % i == 0) and (m % i == 0):
            li.append(i)
            
    gcd = max(li)
    answer = [gcd, int((m * n) / gcd)]
	
    return answer
  • 最小公倍数=(2つの数の積)/最大公倍数