Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ เพื่อใช้อัลกอริธึมแบบยุคลิดแบบขยาย


Extended Euclidean Algorithm เป็นอีกวิธีหนึ่งในการคำนวณ GCD ของตัวเลขสองตัว มีตัวแปรพิเศษในการคำนวณ ax + โดย =gcd(a, b) ใช้ในโปรแกรมคอมพิวเตอร์ได้อย่างมีประสิทธิภาพมากขึ้น

อัลกอริทึม

Begin
   Declare variable a, b, x and y
   gcdExtended(int a, int b, int *x, int *y)
   if (a == 0)
      *x = 0;
      *y = 1;
   return b;
   Take two variables to store the result
   Update x and y using results of recursive call
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