-- Funktsioon findUandV võtab täisarvud a>b>0 ja väljastab sellised u ja v, et
-- a*u+b*v=gcd(a,b)

findUandV	:: Integer -> Integer -> (Integer,Integer)

findUandV a b 	= if c == 0
			then (0,1)
			else (v1,u1-(div a b)*v1)
		    where c  = mod a b
		    	  u1 = fst (findUandV b c)
			  v1 = snd (findUandV b c)
			  
-- Funktsioon inverse leiab antud arvu a pöördarvu mooduli n järgi

inverse	:: Integer -> Integer -> Integer

inverse a n = if g /= 1 
			then error("Ei leidu pöördarvu")
			else mod u n
		  where g = gcd a n
		  	u = fst (findUandV a n) 	

