김현이

[Java] Получение простых чисел с помощью Stream в ленивом стиле

  • Язык написания: Корейский
  • Страна: Все страныcountry-flag
  • ИТ

Создано: 2024-07-23

Создано: 2024-07-23 19:39

Обычно для проверки того, является ли n простым числом, его делят на числа от 2 до n - 1 и проверяют, делится ли оно нацело.

Давайте попробуем оптимизировать этот метод, чтобы сделать его более эффективным, и применим ленивую оценку (lazy evaluation) с помощью Stream.


Наивный метод

Ниже представлен наивный метод проверки того, является ли n простым числом.

Улучшения

  • Если n = a x b, то можно предположить, что a > b, не теряя общности.
    То есть, достаточно проверять i до sqrt(n). Операция sqrt() является дорогостоящей, поэтому ее можно заменить условием i * i <= n.
  • Простые числа, больше 5, имеют вид 6k ± 1. Таким образом, увеличивая i на 6, мы можем сократить количество проверок.

Улучшенный метод


Применение ленивой оценки с помощью Stream

Stream в Java, в отличие от List, не выполняет операции сразу после их определения.

Он находится в состоянии ожидания, зная, как вычислять каждый элемент, и выполняет вычисления только тогда, когда нужен конкретный элемент.

Используя это свойство, мы можем создать Stream, который генерирует простые числа.

Результат выполнения

Полный код

Результат выполнения

[Java] Получение простых чисел с помощью Stream в ленивом стиле




Комментарии0

[Эффективный Java] Элемент 6. Избегайте ненужного создания объектовНенужное создание объектов приводит к расточительности памяти, поэтому для объектов, таких как строки или логические значения, лучше использовать литералы или статические фабричные методы.
제이온
제이온
제이온
제이온

April 28, 2024

Алгоритм Шора: поразительная технология факторизации больших чисел на квантовых компьютерахАлгоритм Шора — это алгоритм, использующий квантовый компьютер для быстрой факторизации больших чисел, что может повлиять на безопасность системы шифрования RSA. Написано 4 января 2025 года.
Cherry Bee
Cherry Bee
Cherry Bee
Cherry Bee

January 4, 2025

Методология инвестирования (акции)Представляем методологию инвестирования в американские фонды ETF, основанную на методе бесконечной покупки и Seven Split. Включает автоматизацию выбора акций, определения моментов покупки/продажи с использованием RPA.
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

April 20, 2024