Исключая числа для сита сундарама

Я работаю над внедрением Сита Сундарама.

Первый шаг - получить список целых чисел, такой что:

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 сть * это должно было быть +,

Другие вопросы по тегам