Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में जीसीडी खोजने के लिए स्टीन का एल्गोरिदम

स्टीन के एल्गोरिदम का उपयोग संख्याओं के जीसीडी की खोज के लिए किया जाता है क्योंकि यह दो गैर-ऋणात्मक पूर्ण संख्याओं के सर्वोत्तम नियमित भाजक की गणना करता है। यह गणित के आंदोलनों, परीक्षाओं और घटाव के साथ विभाजन को बदल देता है। इस घटना में कि a और b दोनों 0 हैं, gcd शून्य gcd(0, 0) =0 है। GCD(a,b) के लिए एल्गोरिथम निम्नानुसार है;

एल्गोरिदम

START
   Step-1: check If both a and b are 0, gcd is zero gcd(0, 0) = 0.
   Step-2: then gcd(a, 0) = a and gcd(0, b) = b because everything divides 0.
   Step-3: check If a and b are both even, gcd(a, b) = 2*gcd(a/2, b/2) because 2 is a common divisor. Multiplication with 2 can be done with a bitwise shift operator.
   Step-4: If a is even and b is odd, gcd(a, b) = gcd(a/2, b). Similarly, if a is odd and b is even, then gcd(a, b) = gcd(a, b/2). It is because 2 is not a common divisor.
   Step-5: If both a and b are odd, then gcd(a, b) = gcd(|a-b|/2, b). Note that difference of two odd numbers is even
   Step-6: Repeat steps 3–5 until a = b, or until a = 0.
END

2 संख्याओं के GCD की गणना करने के लिए उपरोक्त एल्गोरिथम को ध्यान में रखते हुए, निम्नलिखित C++ कोड को इस प्रकार लिखा जाता है;

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int funGCD(int x, int y){
   if (x == 0)
      return y;
   if (y == 0)
      return x;
   int k;
   for (k = 0; ((x | y) && 1) == 0; ++k){
      x >>= 1;
      y >>= 1;
   }
   while ((x > 1) == 0)
      x >>= 1;
   do {
      while ((y > 1) == 0)
         y >>= 1;
         if (x > y)
            swap(x, y); // Swap u and v.
         y = (y - x);
   }
   while (y != 0);
      return x << k;
}
int main(){
   int a = 24, b = 18;
   printf("Calculated GCD of numbers (24,18) is= %d\n", funGCD(a, b));
   return 0;
}

आउटपुट

आखिरकार, दो आपूर्ति की गई संख्या 24 और 18 की GCD की गणना 6 में स्टीन के एल्गोरिदम को निम्नानुसार लागू करके की जाती है;

Calculated GCD of numbers (24,18) is= 6

  1. इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम के लिए C++ प्रोग्राम

    पृष्ठ संख्या और पृष्ठ आकार दिया गया; कार्य हिट और मिस की संख्या का पता लगाना है जब हम इष्टतम पेज रिप्लेसमेंट एल्गोरिथम का उपयोग करके किसी पृष्ठ को मेमोरी ब्लॉक आवंटित करते हैं। इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथम क्या है? इष्टतम पृष्ठ प्रतिस्थापन एल्गोरिथ्म एक पृष्ठ प्रतिस्थापन एल्गोरिथ्म है। पेज

  1. सी ++ में बेलमैन फोर्ड एल्गोरिदम?

    बेलमैन फोर्ड एल्गोरिथम गतिशील प्रोग्रामिंग एल्गोरिथम है जिसका उपयोग किसी भी शीर्ष के सबसे छोटे पथ को खोजने के लिए किया जाता है, जिसे शुरुआती शीर्ष के रूप में माना जाता है। यह एल्गोरिथ्म पुनरावृत्त विधि का अनुसरण करता है और लगातार सबसे छोटा पथ खोजने का प्रयास करता है। भारित ग्राफ़ पर बेलमैन फोर्ड एल्

  1. सी ++ में यूलरियन पथ या सर्किट को प्रिंट करने के लिए फ्लेरी का एल्गोरिदम

    फ्लेरी के एल्गोरिथम का उपयोग दिए गए ग्राफ से यूलर पथ या यूलर सर्किट को प्रदर्शित करने के लिए किया जाता है। इस एल्गोरिथ्म में, एक किनारे से शुरू होकर, यह पिछले कोने को हटाकर अन्य आसन्न कोने को स्थानांतरित करने का प्रयास करता है। इस ट्रिक का उपयोग करके, यूलर पथ या सर्किट को खोजने के लिए प्रत्येक चरण म