Advertisement
Guest User

A

a guest
Jun 14th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. another b q = case (mod q b) of
  2.               0 -> another b (div q b)
  3.               _ -> q
  4.  
  5. cycled b q = case b of
  6.             1 -> (b, q)
  7.             _ -> let nq = another b q in cycled (gcd nq b) nq
  8.  
  9. answer p q b = let g = gcd p q in
  10.                let q2 = div q g in
  11.                let b2 = gcd q2 b in
  12.                let (fb, fq) = cycled b2 q2 in
  13.                case fq of
  14.                1 -> "Finite"
  15.                _ -> "Infinite"
  16.  
  17.  
  18. doTest n list = if n > 0 && length list > 2
  19.                 then let p:q:b:xlist = list in (answer p q b):(doTest (n - 1) xlist)
  20.                 else []
  21.  
  22. doAll inp = let q = map read inp in
  23.     case q of
  24.     [] -> []
  25.     x:xs -> doTest x xs
  26.  
  27. main = interact $ unlines . doAll . words
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement