瀏覽代碼

Implement `euclide`

DricomDragon 5 年之前
父節點
當前提交
259c94a62e
共有 1 個文件被更改,包括 4 次插入0 次删除
  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')