-- The number, 197, is called a circular prime because all rotations of the -- digits: 197, 971, and 719, are themselves prime. -- -- There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, -- 71, 73, 79, and 97. -- -- How many circular primes are there below one million? import Euler import Data.Array.Unboxed import Data.Array.ST rotations n = map (fromDigits . take (length digits)) $ take (length digits) $ tails (cycle digits) where digits = toDigits n main = do let limit = 1000000 - 1 let isPrimeArr = isPrimeArray limit let isPrime n = (isPrimeArr!n) /= 0 let circular n = all isPrime $ rotations n print $ length $ filter circular [2..limit]