[Hugs-users] isPrime definition

Mark Hills mhills at cs.uiuc.edu
Wed Apr 18 16:30:49 EDT 2007


You could always do something like this:

isPrime :: Int -> Bool
isPrime n = if (n < 2) then False else
                if (length (divisors n)) == 2 then True else False

If the number is prime, you will only have two divisors, 1 and the
number, so you know it isn't prime if you don't have two divisors. Also,
primes are defined as being > 1, so it's good to put that check in as well.

Mark

Alex Teslin wrote:
> Hi, I am a newbie in Haskell and have a trivial question.
>
> I am using Simon Thomson's textbook for learning Haskell with Hugs.
> I am stack with exer 5.10, which asks to define isPrime function using
> divisors function previously defined.
>  
> I have managed to define the divisor function like this:
>
> divisors :: Int -> [Int]
> divisors n = [x | x<-[1..n], n `mod` x == 0]
>
> but when i am trying with isPrime function using divisors and list
> comprehension - i am lost because the type signature should be isPrime
> :: Int->Bool
>
> But any list comprehension generates a list, which is not what i want.
>
> Any suggestions please?
>
> Thank you
>
> ------------------------------------------------------------------------
> Yahoo! Answers - Got a question? Someone out there knows the answer.
> Try it now
> <http://uk.answers.yahoo.com/;_ylc=X3oDMTEydmViNG02BF9TAzIxMTQ3MTcxOTAEc2VjA21haWwEc2xrA3RhZ2xpbmU>.
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Hugs-Users mailing list
> Hugs-Users at haskell.org
> http://www.haskell.org/mailman/listinfo/hugs-users
>   


More information about the Hugs-Users mailing list