Project euler problem 3 in haskell -


i'm new in haskell , try solve 3 problem http://projecteuler.net/.

the prime factors of 13195 5, 7, 13 , 29.  largest prime factor of number 600851475143 ? 

my solution:

import data.list  getd :: int -> int getd x =    -- find deviders   let derivelist = filter (\y -> (x `mod` y) == 0) [1 .. x]       filteredlist = filter issimplenumber derivelist   in maximum filteredlist  -- check nmber simple issimplenumber :: int -> bool issimplenumber x = let derivelist = map (\y -> (x `mod` y)) [1 .. x]                        filterlength = length ( filter (\z -> z == 0) derivelist)                        in                            case filterlength of                             2 -> true                             _ -> false 

i try run example:

getd 13195 > 29 

but when try:

getd 600851475143 

i error exception: prelude.maximum: empty list why?

thank @barry brown, think must use:

getd :: integer -> integer 

but error:

couldn't match expected type `int' actual type `integer' expected type: [int]   actual type: [integer] in second argument of `filter', namely `derivelist' in expression: filter issimplenumber derivelist 

thank you.

your type signature limits integer values 2^29. try changing int integer.

edit:

i see realised need use integer instead of int. need change types of both getd , issimplenumber otherwise type mismatch.

also in general, if having trouble types, remove type declarations , let haskell tell correct types.

main> :t getd getd :: integral => ->  main> :t issimplenumber issimplenumber :: integral => -> bool 

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -