एक्सटेंडेड यूक्लिडियन एल्गोरिदम दो संख्याओं का GCD निकालने का बस एक और तरीका है। इसमें ax + by = gcd(a, b) की गणना के लिए अतिरिक्त वेरिएबल्स हैं। यह कंप्यूटर प्रोग्राम में उपयोग करने के लिए अधिक कुशल है।
एल्गोरिदम
Begin
वेरिएबल a, b, x और y घोषित करें
gcdExtended(int a, int b, int *x, int *y)
यदि (a == 0)
*x = 0;
*y = 1;
b लौटाएं;
रिकर्सिव कॉल के परिणाम स्टोर करने के लिए दो वेरिएबल लें
रिकर्सिव कॉल के परिणामों का उपयोग करके x और y अपडेट करें
End
उदाहरण कोड
#include <bits/stdc++.h>
using namespace std;
int gcdExtended(int a, int b, int *x, int *y) {
if (a == 0) {
*x = 0;
*y = 1;
return b;
}
int x1, y1;
int gcd = gcdExtended(b % a, a, &x1, &y1);
*x = y1 - (b / a) * x1;
*y = x1;
return gcd;
}
int main() {
int x, y;
int a = 35, b = 15;
cout << "gcd " << gcdExtended(a, b, &x, &y);
return 0;
}
आउटपुट
gcd 5