1

我正在努力实施Sundaram 的筛子

第一步是获取一个整数列表,这样:

i, j 是自然数,1 <= i <= j

i + j + 2*i*j <= n

这是我的功能。它应该生成(i, j)符合上述限制的所有 's 的元组列表。

numsToRemove :: Integer -> [(Integer, Integer)]
numsToRemove n = [ (i, j) | i <- [1..n], j <- [1..n], i <= j, i >= 1, j >= 1, 
                            i * j + 2*i*j <= n]

但是我的回答中没有得到非质数。排除我的其他工作,我认为我在生成这个整数列表时犯了一个错误。

请让我知道我做错了什么。

4

1 回答 1

2

您的函数检查i * j + 2*i*j <= n但您的定义要求i + j + 2*i*j <= n. 有一个*应该是一个+

于 2014-09-26T01:04:21.283 回答