haskell - Convert Int into [Int] -


i'm looking through past exam paper , don't understand how convert int [int]. example, 1 of questions asks produce list of factors of whole number excluding both number , 1.

strictfactors int -> [int] strictfactors x = ??? 

i'm not asking question me! want know how i'd convert integer input list of integer output. thanks!

perhaps easiest have @ similar code. requested, won't give answer, should able use these ideas want.

brute force

here we're going use pairs of numbers between 1 , x test if can make x sum of 2 square numbers:

sumofsquares :: int -> [int] sumofsquares x = [ (a,b) | <- [1..x], b <- [a..x], a^2 + b^2 == x] 

you call this:

ghci> assumofsquares 50 [(1,7),(5,5)] 

because 50 = 1^2+7^2 , 50 = 5^2 + 5^2.

you can think of sumofsquares working first taking a list [1..x] of numbers between 1 , x , between , x. checks a^2 + b^2 == x. if that's true, adds (a,b) resulting list.

generate , check

this time let's generate single numbers check whether they're multiple of another. calculate least common multiple (lcm). example, least common multiple of 15 , 12 60, because it's first number that's in both 15 , 12 times tables.

this function isn't of type want uses techniques want.

lcm :: int -> int -> int lcm x y = head [x*a | <- [1..], (x*a) `mod` y == 0] 

you can call this:

ghci> lcm 12 15 60 

this time list of numbers [1..] (in principle) infinite; job we're picking first 1 head!

(x*a) `mod` y == 0 checking see whether number x*a multiple of y (mod gives remainder after division). that's key idea should use.

summary

use a <- [1..end] generate numbers, test them true/false expression (i.e. bool), perhaps using mod function.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

javascript - jQuery .height() return 0 when visible but non-0 when hidden -