Browse Source

Implement `euclide`

DricomDragon 5 years ago
parent
commit
259c94a62e
1 changed files with 4 additions and 0 deletions
  1. 4 0
      tp/rsa/main.hs

+ 4 - 0
tp/rsa/main.hs

@@ -63,3 +63,7 @@ primeinf = 2:3:[n | n <- primecandidates, prime n]
 choosePrime::Int -> Int
 choosePrime b = head $ dropWhile (<= b) primeinf
 
+-- a -> b -> (g, u, v) where a * u + b * v = g with g GCD
+euclide::Int -> Int -> (Int, Int, Int)
+euclide a 0 = (a, 1, 0)
+euclide a b = let (d', u', v') = euclide b (mod a b) in (d', v', u' - (div a b) * v')