生成具有列表理解的素数元组,每个元组具有更高的总和

Generating tuples of primes with a list comprehension, each tuple having higher sum

我进行了搜索,但没有找到有用的东西,所以我 post 提出了一个新问题。我正在学习Haskell,这是一个我不明白的练习。

我想创建一个素数元组的无限列表,每个元组的总和是一个更高的偶数,从 2 开始。所以输出应该是例如: [(0,2), (2,2), (3,3), (3,5)...

我只想用列表推导来做,没有递归。问题是每个元组的总和必须更高。我定义了我自己的 primetest 函数 prim,然后像这样开始:

goldbachList :: [(Int, Int)]
goldbachList = [(a,b) | b <- [1 ..], a <- [0 .. b], prim a || a == 0, prim b, a+b >= 2, even (a+b)]

但显然这会创建一个无限列表,其中的元组比我想要的要多得多。是否有可能包含条件,即每个元组必须在列表理解中与其前身相比下一个偶数的总和?

因为这听起来像是一个有趣的编程练习,所以我将给出提示而不是完整的解决方案。这是一个帮助您入门的模板:[findPair n | n <- [2,4..]]。您还可以使用列表理解来实现 findPair(加上 head —— 这不是递归的 —— 如果你相信这个猜想是真的!)。