All pastes #1260572 Raw Edit

Haskell

public text v1 · immutable
#1260572 ·published 2008-11-18 18:13 UTC
rendered paste body
import Random

--Extended GCG algorithm
extd_gcd :: (Integer,Integer) -> (Integer,Integer)
extd_gcd (a,b) = 
  if a `mod` b == 0 then (0,1)
  else let
    (x,y) = extd_gcd (b, a `mod` b)
  in
    (y, x-y*(a `div` b))

--Decide if two given numbers are coprime
coprime :: Integer -> Integer -> Bool
coprime x y = gcd x y == 1

totient :: Integer -> Integer
totient 1 = 1
totient a = length $ filter (coprime a) [1..a-1]

primes :: [Integer]
primes = [9990510001,9990510011,9990510043,9990510067,9990512687,9990512711,9990512761,9990512767,9990514777,9990514829,9990514837,9990514871,9990515809,9990515831,9990515839,9990515869,9990517783,9990517787,9990517799,9990517807,9990519601,9990519607,9990519629,9990519641]

n (a,b) =
  primes!!a * primes!!b



foo = do
    g <- newStdGen
    let (r1', g1) = random g
    let (r2', _) = random g1
    let r1 = r1' `mod` 24 :: Integer
    let r2 = r2' `mod` 24 :: Integer
    return (r1, r2)

main = do
    (r1, r2) <- foo
    putStrLn $ show r1
    putStrLn $ show r2
    putStrLn $ show $ n (r1,r2)