2016-08-31 7 views
1

私は数の因子を計算するために以下のJavaScriptコードを持っています。2つの値の共通の因数を見つける

var some = []; 
 
var main = ""; 
 
var final = ""; 
 

 
function text(data) { 
 
    spliter = data.split(","); 
 

 
    var k = 0; 
 
    while (k < spliter.length) { 
 
    var meethi = 0;; 
 
    main = spliter[k]; 
 

 
    var datas = ""; 
 
    for (var i = 1; i <= 10; i += 1) { 
 
     meethi = Math.abs(main/i); 
 
     datas = meethi; 
 
     some.push('' + datas + ''); 
 
    } 
 
    some.forEach(myFunction); 
 
    final += res + '<br>'; 
 
    k++; 
 
    } 
 

 
    return final; 
 
} 
 
var max = 0; 
 
var res = ""; 
 

 
function myFunction(item) { 
 
    var van = item.split("."); 
 
    if (van[1] == undefined) { 
 
    var high = Math.floor(main/van[0]); 
 
    if (high > max) { 
 
     max = high; 
 
     res += max + ':'; 
 
    } 
 
    } 
 
} 
 
document.getElementById('demo').innerHTML = text('124,20');
<p id="demo"></p>

私のプログラムは、2つの値を持つ要素を取得します。両方の値の共通因子を特定するにはどうすればよいですか?

('124,20') output --> 4ように私は自分の知識を持つコードを試してみました。コードに関する他の提案がある場合は、私に教えてくださいと私の希望の結果で私のコードを修正してください。あなたは最大公約数Euclid's algorithmのために使用することができ

my fiddle

+1

あなたが要因をうまくできるようですので、一般的な要因は、両方のリストに表示されるものです。あなたの問題は何ですか?また、あなたの例(1,2&4)に3つの一般的な要因がありますが、なぜ結果として4だけが必要なのでしょうか? – Jamiec

+0

@jamiec ya ..正しい..両方の共通の要因が必要です。最も高いコマン値だけです。 –

+0

ああ、それは最大の共通分母として知られており、あなたが答えからわかるようによく知られている問題です。 – Jamiec

答えて

4

function gcd(k, n) { 
 
    return k ? gcd(n % k, k) : n; 
 
} 
 

 
console.log(gcd(124, 20)); 
 
console.log([10, 500, 600].reduce(gcd));

+3

あなたは300BCで質問への回答が策定されたときにそれを愛してはいけません! – Jamiec

+0

* "今日まで生き残った最古の重要なアルゴリズムであるため、すべてのアルゴリズムのおじいちゃん" * [Donald knuth] –

+0

ありがとうございました.2つしか値がありませんでした。さらに2つの '('10、500,600 ') '。私は何をすべきですか? –

関連する問題