Primzahlen(Haskell)
Aus IT074-Wiki
prim entfernt alle Zahlen, die keine Primzahlen sind aus einer gegebenen Liste.
prim [] = [] prim (x:xs) = if x*x > maximum(x:xs) then (x:xs) else [x] ++ prim [y | y<-xs, mod y x /= 0]
Legende:
- [] ist die leere Liste
- a:L fügt das Element a der Liste L hinzu (immer linksseitig: 1:2:3:4:[] == [1,2,3,4])
- x:xs bedeutet daher: x (erstes Element der übergebenen Liste) xs (Restliste)
- ++ verkettet Listen
- [y | y<-x, z] = Liste von ypsilonen aus der Menge x, die der Bedingung z genügen, Bsp.: [x|x<-[1,2,3], x>1] == [2,3]
Oder:
prim [] = [] prim (x:xs) = if x*x > maximum(x:xs) then (x:xs) else [x] ++ prim (filter ((/=0).(`mod`x)) xs)
Legende:
- filter (bed) [liste] entfernt alle Elemente aus der Liste "liste", die der Bedingung "bed" genügen
- . verkettet Funktionen im Sinne von (g.f)(x) = g(f(x))
Bsp. für Aufruf und Rückgabe dieser Funktion (egal welche beider Varianten) im interaktiven Modus des ghc
*Main> prim [2..100] [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]

