Skip to content

Instantly share code, notes, and snippets.

@utdemir
Created July 1, 2014 11:41
Show Gist options
  • Save utdemir/be6dead12f986a44ed35 to your computer and use it in GitHub Desktop.
Save utdemir/be6dead12f986a44ed35 to your computer and use it in GitHub Desktop.
import System.Environment
import Math.NumberTheory.Primes.Sieve (primes)
import Math.NumberTheory.Primes.Testing (isPrime)
-- Converts 42d -> 101010d
binread :: Integer -> Integer
binread 0 = 0
binread n = let (q, r) = n `divMod` 2
in r + 10 * binread q
turingPrimes :: [Integer]
turingPrimes = filter (isPrime.binread) primes
main = do
args <- getArgs
let bitCount = read $ head args
let ps = takeWhile (< (2^bitCount)) turingPrimes
let psNum = zip [1..] ps
mapM_ print $ map (\ (i, n) -> (n, binread n, i)) psNum
print $ length ps
return ()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment