summaryrefslogtreecommitdiffstats
path: root/AufgabeFFP2.hs
diff options
context:
space:
mode:
Diffstat (limited to 'AufgabeFFP2.hs')
-rw-r--r--AufgabeFFP2.hs36
1 files changed, 18 insertions, 18 deletions
diff --git a/AufgabeFFP2.hs b/AufgabeFFP2.hs
index 7ed19fc..aef3bfb 100644
--- a/AufgabeFFP2.hs
+++ b/AufgabeFFP2.hs
@@ -6,33 +6,33 @@ where
6-- primality check 6-- primality check
7isPrime :: Integer -> Bool 7isPrime :: Integer -> Bool
8isPrime n = n > 1 && 8isPrime n = n > 1 &&
9 foldr (\p r -> 9 foldr (\p r ->
10 p*p > n 10 p*p > n
11 || ( 11 || (
12 (n `mod` p) /= 0 12 (n `mod` p) /= 0
13 && r 13 && r
14 ) 14 )
15 ) 15 )
16 True primes 16 True primes
17 17
18-- series of primes 18-- series of primes
19primes :: [Integer] 19primes :: [Integer]
20primes = 2:filter isPrime [3,5..] 20primes = 2:filter isPrime [3,5..]
21 21
22-- pairs of (p,p+2) | p,p+2 <- primes 22-- pairs of (p,p+2) | p,p+2 <- primes
23-- generate all pairs with map and then filter only the valid ones 23-- generate all pairs with map and then filter only the valid ones
24-- pair is valid if the second component n is a prime 24-- pair is valid if the second component n is a prime
25pps :: [(Integer, Integer)] 25pps :: [(Integer, Integer)]
26pps = filter (\(_,x) -> isPrime x) $ map (\p -> (p,p+2)) primes 26pps = filter (\(_,x) -> isPrime x) $ map (\p -> (p,p+2)) primes
27 27
28------------------------------------------------------------------------------- 28-------------------------------------------------------------------------------
29 29
30-- 2 30-- 2
31 31
32-- generates powers of 2 32-- generates powers of 2
33pof2s :: [Integer] 33pof2s :: [Integer]
34pof2s = [1] ++ map (2*) pof2s 34pof2s = [1] ++ map (2*) pof2s
35 35
36-- calculates 2^n 36-- calculates 2^n
37pow :: Int -> Integer 37pow :: Int -> Integer
38pow 0 = 1 38pow 0 = 1
@@ -70,7 +70,7 @@ f z k = g z k h
70-- actual function g (converts Int to Integer for more precision) 70-- actual function g (converts Int to Integer for more precision)
71g :: Int -> Int -> (Integer -> Integer -> Float) -> Float 71g :: Int -> Int -> (Integer -> Integer -> Float) -> Float
72g z k h = sum $ map (h $ fromIntegral z) [0..(fromIntegral k)] 72g z k h = sum $ map (h $ fromIntegral z) [0..(fromIntegral k)]
73 73
74-- helper function h using mem-table for the power-series (z^i) and for factorial (i!) 74-- helper function h using mem-table for the power-series (z^i) and for factorial (i!)
75hMT :: Integer -> Integer -> Float 75hMT :: Integer -> Integer -> Float
76hMT z i = (fromInteger $ pofNs z !! (fromInteger i)) / (fromInteger $ facs !! (fromInteger i)) 76hMT z i = (fromInteger $ pofNs z !! (fromInteger i)) / (fromInteger $ facs !! (fromInteger i))
@@ -86,15 +86,15 @@ h z i = (fromInteger $ z^i) / (fromInteger $ fac i)
86-- gets the digits of an integer as a list 86-- gets the digits of an integer as a list
87digits :: Integer -> [Integer] 87digits :: Integer -> [Integer]
88digits x 88digits x
89 | x<=0 = [] 89 | x<=0 = []
90 | otherwise = (digits $ x `div` 10)++[x `mod` 10] 90 | otherwise = (digits $ x `div` 10)++[x `mod` 10]
91 91
92-- calculates the goedel-number for the given integer 92-- calculates the goedel-number for the given integer
93-- returns 0 for non-positive numbers 93-- returns 0 for non-positive numbers
94gz :: Integer -> Integer 94gz :: Integer -> Integer
95gz n 95gz n
96 | n<=0 = 0 96 | n<=0 = 0
97 | otherwise = product $ zipWith (^) primes (digits n) 97 | otherwise = product $ zipWith (^) primes (digits n)
98 98
99-- goedel-number generator 99-- goedel-number generator
100gzs :: [Integer] 100gzs :: [Integer]