
25 Nov
2019
25 Nov
'19
8:20 a.m.
On Mon, Nov 25, 2019 at 08:55:17AM +0100, Alexander Chen wrote:
Hi Francesco,
Their is a ^2, ^3, ^4 in the lists, respectively.
This runs reasonably fast even on my old 32bit machine: import qualified Data.Set as S import Data.Numbers.Primes sol72 :: Integer -> Int sol72 l = S.size . S.fromList $ [(x+y+z) | x <- p2, y <- p3, z <- p4, x+y+z < l] where f :: Integer -> [Integer] f n = takeWhile (< l) $ map (^n) primes p2, p3, p4 :: [Integer] p2 = f 2 p3 = f 3 p4 = f 4 λ> sol72 (50 * 10^6) 1097343 Notice how the lengths for lists p2, p3 and p4 are actually 908, 73 and 23! -F