www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

grizzzly

Gepostet:
13.01.2009 19:12

Teiler  
Hallo an alle :D
Hab in Informatik ne Aufgabe bekommen, bei der ich gerade nicht weiter komme:

Gesucht ist die Funktion teiler :: Int -> [Int] , die alle Teiler des Arguments liefert.

Bisher hab ich das hier :

teiler :: Int -> [Int]
teiler t = [x|x<-[1..t] (&&) mod t x = 0]

Das gibt mir aber nen Syntaxfehler zurück.

Man könnte die ganze Sache villeicht rekursiv lösen, aber wie weiß ich grade nicht xD

LG und schonmal Danke im Vorraus

Grizzzly
Zum Seitenanfang    
 
grizzzly

Gepostet:
14.01.2009 15:30

   
OK ich habs jetzt... waren nur ein paar kleinere Syntakfehler

teiler :: Int -> [Int]
teiler n = [x|x<-[1..(div n 2)], mod n x == 0] ++ [n]


LG
Chrissi
Zum Seitenanfang    
 
korchix

Gepostet:
09.05.2011 01:18

   
Hallo,
das erste Beispiel finde ich besser :) muss nur noch korrigiert werden. so z.B :


teiler :: Int -> [Int]
teiler t = [x|x<-[1..t], t`mod` x = 0]


Bzw :


teiler :: Int -> [Int]
teiler t = [x|x<-[1..t-1], t`mod` x = 0]


Lg
Zum Seitenanfang    
 
Landei

Gepostet:
09.05.2011 08:54

   
Die Bedingung muss in beiden Fällen

t `mod` x == 0

lauten.
Zum Seitenanfang    
 
korchix

Gepostet:
09.05.2011 21:34

   
Ja stimmt :)))


teiler :: Int -> [Int]
teiler t = [x|x<-[1..t], t`mod` x == 0]


danke :)
Zum Seitenanfang    
 
Landei

Gepostet:
10.05.2011 11:13

   
Oder so:


teiler t = filter ((==0).(t`mod`)) [1..t]
Zum Seitenanfang