Prime numbers
Revision as of 16:33, 5 February 2007 by MathematicalOrchid (talk | contribs) (I hope this amuses somebody...)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
The following is an elegant (and highly inefficient) way to generate a list of all the prime numbers in the universe:
primes = sieve [2..] where
sieve (p:xs) = filter (\x -> x `mod` p == 0) xs
With this definition made, a few other useful (??) functions can be added:
is_prime n = n `elem` (takeWhile (n >) primes)
factors n = filter (\p -> n `mod` p == 0) $ takeWhile (n >) primes)
factorise 1 = []
factorise n =
let f = head $ factors n
in f : factorise (n `div` f)
(Note the repeated use of takeWhile
to prevent the infinite list of primes requiring an infinite amount of CPU time and RAM to process!)