कैसे ढूंढें मैं जावास्क्रिप्ट का उपयोग कर सबसे बड़ा आम divisor खोजना चाहता हूँ।जेएस सबसे बड़ा आम divisor
कोई भी ऐसा करने से पहले और साझा करने के इच्छुक है?
कैसे ढूंढें मैं जावास्क्रिप्ट का उपयोग कर सबसे बड़ा आम divisor खोजना चाहता हूँ।जेएस सबसे बड़ा आम divisor
कोई भी ऐसा करने से पहले और साझा करने के इच्छुक है?
यहां एक पुनरावर्ती समाधान है।
var gcd = function(a, b) {
if (! b) {
return a;
}
return gcd(b, a % b);
};
हमारा आधार मामला है जब b
0
के बराबर है। इस मामले में, हम a
लौटते हैं।
जब हम रिकर्स कर रहे हैं, हम इनपुट तर्कों को स्वैप करते हैं लेकिन हम दूसरे तर्क के रूप में शेष a/b
पास करते हैं।
function egcd(a, b) {
if (a == 0)
return b;
while (b != 0) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
विकिपीडिया से लिया गया।
रिकर्सिव:
function gcd_rec(a, b) {
if (b) {
return gcd_rec(b, a % b);
} else {
return Math.abs(a);
}
}
Iterative:
function gcd(a,b) {
a = Math.abs(a);
b = Math.abs(b);
if (b > a) {var temp = a; a = b; b = temp;}
while (true) {
if (b == 0) return a;
a %= b;
if (a == 0) return b;
b %= a;
}
}
'if (a <0) a = -a; 'आप भी कर सकते हैं करें 'ए = Math.abs (ए); '(अगली पंक्ति के लिए समान) – user2428118
ठीक काम करता है, धन्यवाद! – bboy
रिकर्सिव सबसे तेज़ नहीं है। –
@FlorianF ठीक है, इसके लिए धन्यवाद। मुझे याद आया जहां ओपी ने सबसे तेज़ समाधान के लिए कहा था। – alex