Question: A positive integer is perfect if it equals the sum of all of its factors, excluding the number itself. Use a list comprehension and the

A positive integer is perfect if it equals the sum of all of its factors, excluding the
number itself. Use a list comprehension and the following function factors:
factors :: Int ->[Int]
factors n =[x | x <-[1..n], n mod x ==0]
to define a function perfects :: Int ->[Int] that returns the list of all perfect numbers up to
a given limit. For example (in GHCi):
> perfects 500
[6,28,496]
Hint: define an auxiliary function isperfect :: Int -> Bool which returns True if the given Int
is perfect, and False otherwise. Then use isperfect as a guard in a list comprehension to filter
out all of the non-perfect integers, i.e., to keep only the perfect integers.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!