Aleks11

ExtendedeGCD

Mar 12th, 2015
442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.54 KB | None | 0 0
  1. static NT ExtendedGCD(NT a, NT b, NT &alpha, NT &betta)
  2.     {
  3.         NT b2 = b;
  4.  
  5.         if (b == 0)
  6.         {
  7.             alpha = 1;
  8.             betta = 0;
  9.            
  10.             return a;
  11.         }
  12.  
  13.         NT alpha2 = 1, alpha1 = 0, betta2 = 0, betta1 = 1;
  14.  
  15.         while (b > 0)
  16.         {
  17.             NT q = a / b;
  18.             NT r = a - q * b;
  19.            
  20.             alpha = alpha2 - q * alpha1;
  21.             betta = betta2 - q * betta1;
  22.  
  23.             a = b;
  24.             b = r;
  25.  
  26.             alpha2 = alpha1;
  27.             alpha1 = alpha;
  28.             betta2 = betta1;
  29.             betta1 = betta;
  30.         }
  31.  
  32.         alpha = alpha2;
  33.         betta = betta2;
  34.        
  35.         if (alpha < 0)
  36.             alpha += b2;
  37.  
  38.         return a;
  39.     };
Advertisement
Add Comment
Please, Sign In to add comment