summaryrefslogtreecommitdiff
path: root/prime.hs
diff options
context:
space:
mode:
Diffstat (limited to 'prime.hs')
-rw-r--r--prime.hs11
1 files changed, 11 insertions, 0 deletions
diff --git a/prime.hs b/prime.hs
new file mode 100644
index 0000000..2407280
--- /dev/null
+++ b/prime.hs
@@ -0,0 +1,11 @@
+prime = [x| x<-[2,3..], null [y|y<-[2,3..floor $ sqrt(fromIntegral x)],mod x y ==0] ]
+
+primes r [] = r
+primes r (p:ps) = if null [y|y<-r,mod p y == 0]
+ then p:(primes (p:r) ps)
+ else primes r ps
+
+pr = 2:(ps [3,5..])
+
+ps (x:xr) = x:(ps (filter rem xr))
+ where rem y = (mod y x) /=0