我正在尝试编写一个 Haskell 程序,它输出一个素数列表,但只输出那些平方大于前一个和后一个素数的乘积的那些。例如,给定
primes = [2, 3, 5, 7, 11, 13, 17]
-- keep 5 since 5² > 3*7
-- keep 11 since 11² > 7*13
Run Code Online (Sandbox Code Playgroud)
我的计划是创建正方形和相邻乘积的列表,然后使用过滤器仅输出素数列表中正方形大于相邻乘积的那些元素。这是我到目前为止
products :: [Int]
products = zipWith (*) primes (drop 2 primes)
squares :: [Int]
squares = zipWith (*) (drop 1 primes) (drop 1 primes)
goodPrimes :: [Int]
goodPrimes = filter (\products, squares -> squares > products) (drop 1 primes)
Run Code Online (Sandbox Code Playgroud)
一切正常,但goodPrimes 功能。我希望一切都清楚,有人可以帮助我。