1
Sieve of Sundaram을 구현 중입니다.Sundaram의 체에 대한 번호 제외
가난, j는 자연수, 1 < =있는 난 < = 난 +
J J + 2 * i가 J를 *
첫 번째 단계는 정수의되도록리스트를 얻기위한 것이다 < = 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]
하지만 내 대답에 비소수가 나타납니다. 내 다른 작업을 제외하고 나는이 정수 목록을 생성하는 데 실수를하고 있다고 생각합니다.
내가 뭘 잘못하고 있는지 알려 주시기 바랍니다.
내 실수를 저지 해줘서 고마워! 그러나,'numsToRemove 100'을 실행하고'(toList. foldr (\ (x, y) acc -> insert x $ insert y acc) empty)'를 실행하면'[1..33]'이 결과 ... –
왜 그게 잘못 됐니? 당신이 당신의 질문에 준 제한에서 기대할 수있는 것. – hugomg
글쎄, 결과가'[1..33]'이되면, 그 수를 모두 제외해도 틀린 것이 아닌가? –