Improve Haskell solution for Problem 23 (much faster)

This commit is contained in:
daniele 2024-11-13 22:17:42 +01:00
parent 5fa2b14842
commit 5608a19230
Signed by: fuxino
GPG Key ID: 981A2B2A3BBF5514

View File

@ -10,6 +10,7 @@
--
-- Find the sum of all the positive integers which cannot be written as the sum of two abundant numbers.
import Data.List
import qualified Data.Set as Set
import ProjectEuler (sumProperDivisors)
@ -17,7 +18,7 @@ isAbundant :: (Integral a) => a -> Bool
isAbundant n = sumProperDivisors n > n
abundantSums :: (Integral a) => [a]
abundantSums = nub [ x + y | x <- abundantList, y <- abundantList, x + y <= 28123, y >= x ]
abundantSums = Set.toList $ Set.fromList [ x + y | x <- abundantList, y <- abundantList, x + y <= 28123, y >= x ]
where abundantList = [ x | x <- [12..28123], isAbundant x ]
sumNotAbundant :: (Integral a) => a