Исключая числа для сита сундарама
Я работаю над внедрением Сита Сундарама.
Первый шаг - получить список целых чисел, такой что:
i, j натуральные числа, 1 <= i <= j
i + 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]
Но я получаю не простые числа в своем ответе. Исключая мою другую работу, я думаю, что я делаю ошибку в создании этого списка целых чисел.
Пожалуйста, дайте мне знать, что я делаю не так.
1 ответ
Решение
Ваша функция проверяет i * j + 2*i*j <= n
но ваше определение просит i + j + 2*i*j <= n
, E сть *
это должно было быть +
,