Haskell programmierung

mniemeck

Newbie
Registriert
Nov. 2008
Beiträge
2
Guten Tag,

benötige dringend hilfe zu einer AUfgabe zu Haskell. Soll ein Programm schrieben mit dem ich die primfaktoren einer Zahl rausbekomme. Und zwar sollen die Primfaktoren in eine Liste geschrieben werden. Ich weiß zwar was Primfaktoren sind . Aber weiß irgendwie nicht was ich da für eine Formel machen soll.

primFaktoren :: Int -> [Int]
 
hab jetzt nen code , aber er ordnet die ergenisse noch von Groß zu klein ....

wie bekomm ich das hin das er mit der kleinsten anfängt ?

Code:
faktor :: Integer -> [Integer]
getfaktor :: Integer -> [Integer] -> [Integer]

faktor n = getfaktor n [x | x <- [2..n], n `mod` x == 0]

getfaktor n (x:xs) | n == x = [x]
  | x == 1 = getfaktor n xs
  | otherwise = faktor (n `div` x) ++ [x]
 
Ich habe schon seit langem kein Haskell mehr geschrieben, aber probier mal in der letzten Zeile das ganze umzudrehen, also

Code:
otherwise = [x] ++ faktor (n `div` x)

Du musst nicht alle Faktoren von 2 bis n testen, sondern nur bis sqrt(n). Denn wenn n durch x teilbar ist und x größer als sqrt(n) ist, dann ist n / x kleiner als sqrt(n) und du hättest es schon vorher getestet.
 
Du könntest die Liste auch einfach mit reverse umdrehen :)
 
Vielleicht steht ja im YHBT Haskell Beginner's Tutorial was drin :F
 
Zurück
Oben