Змагання
Реалізувати сито Сундара для знаходження простих чисел нижче n. Візьміть ціле число введення nта виведіть прості числа нижче n. Можна припустити, що nзавжди буде менше або дорівнює одному мільйону.
Решето
Почніть зі списку цілих чисел від
1доn.Видаліть усі цифри у формі,
i + j + 2ijде:iіjменшеn.jзавжди більше або дорівнюєi, що більше або дорівнює1.
i + j + 2ijменше або дорівнюєn
Помножте решта чисел на
2і додайте1.
Це призведе до отримання всіх простих чисел (за винятком тих 2, які повинні бути включені у ваш вихід) менше, ніж 2n + 2.
Ось анімація сита, який використовується для пошуку праймерів нижче 202.

Вихідні дані
Вихід повинен бути кожним простим цілим числом ≤ n(у порядку зростання) з наступним новим рядком:
2
3
5
Де nє 5.
Приклади
> 10
2
3
5
7
> 30
2
3
5
7
11
13
17
19
23
29
Вводи позначаються через >.
(i,j)з i<=j, але результат не зміниться , якщо ми будемо ігнорувати цю вимогу. Чи можемо ми це зробити, щоб зберегти байти?
i <= j. Це просто частина того, як працює сито. Так що так, ви можете залишити i <= jсвій код у своєму коді. @xnor
2n+1), які не є формою 2(i + j + 2ij)+1- чи можемо ми перевірити цю властивість безпосередньо на потенційних праймерах чи чи повинен наш код робити час 2 плюс 1 в якийсь момент ?
nє в цілому. В описі методу сказано, що він генерує всі праймери до 2 * n + 2. Але в описі вводу / виводу йдеться про те, що вхід є n, а вихід - всі праймери до n. Тож ми повинні застосувати метод, щоб генерувати всі праймери до 2 * n + 2, а потім відкинути ті, які є більшими, ніж nдля виведення? Або ми повинні обчислити nопис методу з вхідних даних n?
n=30пропущено 29 у висновку.