コードテスト練習04:[プログラマー]最大公倍数と最小公倍数



ソース:プログラマ
使用言語:JavaScript

イニシャルコード

function solution(n, m) {
    var answer = [];
    return answer;
}

私が書いたコード

function solution(n, m) {
    var answer = [];
    if(n<m){
        if(m%n!==0){
            answer[0]=1;
            answer[1]=n*m;
        }else{
          answer[0]=n;
          answer[1]=m;  
        }
    }else if(m<n){
        if(n%m!==0){
            answer[0]=1;
            answer[1]=n*m;
        }
        else{
            answer[0]=m;
            answer[1]=n; 
        }

    }else if(n=m){
        answer[0]=n;
        answer[1]=n; 
    }
    
    return answer;
}

の最大公約数が1でない場合、n,mの残り数が0の錯覚編成のコード、、、
テストの結果、最大公約数は1ではありませんが、残りも0ではない組み合わせがたくさんあります・・・
これは例の結果だけを見て、無知で書いたコードです......ハハハ...
検索したところ、最小公倍数を求める簡単な方法があることが分かった.ユークリッドアーク除去法!よふ…!?
ユークリッドアーク除算はMOD演算を繰り返すだけだそうです.
(MOD演算:2つの値の残存値を求める)
1230と904の最大公約数を獲得!
  • 1230は904を区別しないので、1230を904に分けて余数を求める.=>326
  • 904分が326なので、904分が326の剰余を求めます.=>252
  • 326分252未満なので、326分を252に分けて余りを求めます.=>74
  • 52は74を区別しないので、252を74で割って余りを求める.=>30
  • 74は30を区別しないので、74を30で割って余りを求める.=>14
  • 30は14を分けないので、30を14で割った余りを求めます.=>2
  • 114分2
    したがって、最大承諾数は2
    最大公約数のCodeを求めます~!
  • function solution(a, b){
        while (b > 0)
        {
            let tmp = a;
            a = b;
            b = tmp%b;
        }
        return a;
    }
    注意:リンクテキスト
    最大公約数は最小公倍数がわかるので入手しやすい!
    2つの数を乗じて、最大公約数で割るといいです!
    =>A x B=最大公約数X最小公倍数.🙂

    書き換えコード

    function solution(n, m) {
        var answer = [];
        let a=n;
        let b=m;
         while (m > 0){
            let tmp = n;
            n = m;
            m = tmp%m;
        }
        answer[0]=n;
        answer[1]=(a*b)/n
        
        return answer;
    }

    ううう

    他人を解く

    function gcdlcm(a, b) {
        var r;
        for(var ab= a*b;r = a % b;a = b, b = r){}
        return [b, ab/b];
    }
    wow....

    🙍 📝

    forゲートでこのように使えるかどうか考えていますが...
    コメントによると、T/F条件は(r=a%b)と判別され、0が現れるとforゲートが終了する.
    なるほど、俳優俳優俳優俳優!