Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
module TUOLP
where
import TAMO
evens = [ x | x <- [0..], even x ]
prime :: Integer -> Bool
prime n | n < 1 = error "not a positive integer"
| n == 1 = False
| otherwise = ldp n == n where
ldp = ldpf primes
ldpf (p:ps) m | rem m p == 0 = p
| p^2 > m = m
| otherwise = ldpf ps m
primes = 2 : filter prime [3..]
sieve :: [Integer] -> [Integer]
sieve (0 : xs) = sieve xs
sieve (n : xs) = n : sieve (mark xs 1 n)
where
mark :: [Integer] -> Integer -> Integer -> [Integer]
mark (y:ys) k m | k == m = 0 : (mark ys 1 m)
| otherwise = y : (mark ys (k+1) m)
primes :: [Integer]
primes = sieve [2..]
oddsFrom3 :: [Integer]
oddsFrom3 = 3 : map (+2) oddsFrom3
mersenne = [ (p,2^p - 1) | p <- primes, prime (2^p - 1) ]
notmersenne = [ (p,2^p - 1) | p <- primes, not (prime (2^p-1)) ]
pdivisors :: Integer -> [Integer]
pdivisors n = [ d | d <- [1..(n-1)], rem n d == 0 ]
primePairs :: [(Integer,Integer)]
primePairs = pairs primes
where
pairs (x:y:xys) | x + 2 == y = (x,y): pairs (y:xys)
| otherwise = pairs (y:xys)
primeTriples :: [(Integer,Integer,Integer)]
primeTriples = triples primes
where
triples (x:y:z:xyzs)
| x + 2 == y && y + 2 == z = (x,y,z) : triples (y:z:xyzs)
| otherwise = triples (y:z:xyzs)