我正致力于实施Sieve of Sundaram。
第一步是获取整数列表,以便:
i,j是自然数,1 <= i <= j
i + j + 2 * i * j&lt; = n
这是我的功能。它应该生成一个符合上述条件的所有(i, j)
元组的元组列表
限制。
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]
但我在答案中得到了非素数。除了我的其他工作,我认为我在生成这个整数列表时犯了一个错误。
请让我知道我做错了什么。
答案 0 :(得分:2)
您的功能会检查i * j + 2*i*j <= n
,但您的定义会询问i + j + 2*i*j <= n
。有一个*
应该是+
。