translation

AIが翻訳した投稿です。

김현이

[Java] Streamを使って遅延評価で素数を取得する

プロフィール画像

durumis AIが要約した投稿

  • Javaで素数判定を行う場合、2からn-1までで割り切れるかどうかを確認する従来の方法の効率性を改善し、sqrt(n)まで検査し、6k±1の形を利用する方法を示します。
  • Streamを使用することで、遅延評価を適用すれば、必要な要素が発生したときにのみ演算を実行し、素数を取得するStreamを作成できます。
  • 提示された改善点とStreamの使用方法により、素数判定アルゴリズムをより効率的に実装できます。

一般的に、nが素数かどうかを確認するには、2からn - 1までnで割り切れるかどうかを検査します。

この方法でいくつかの最適化を適用して、より効率的に改善し、Streamを使用して遅延評価を適用してみましょう。


ナイーブな方法

以下は、nが素数かどうかを検査するナイーブな方法です。

改善点

  • n = a x bと表現する場合、a > bと仮定しても一般性を失いません。
    つまり、iはsqrt(n)まで検査すれば十分です。sqrt()演算はコストがかかるため、i * i <= n条件に置き換えることができます。
  • 5以上の素数は、6k ± 1の形をしています。そのため、iを6ずつ増分して検査することで、検査回数を減らすことができます。

改善された方法


Streamで遅延評価を適用する

JavaのStreamは、Listとは異なり、演算が定義されたときにすぐに演算を実行しません。

各要素をどのように計算するかを定義した状態で待機し、特定の要素が必要になったときに、その要素を取得するための演算のみを実行します。

これにより、次のように素数を取得するStreamを作成できます。

実行結果

全体のコード

実行結果

[Java] Streamを使って遅延評価で素数を取得する




[Effective Java] アイテム6. 不要なオブジェクト生成を避ける不要なオブジェクト生成はメモリ浪費につながるため、文字列やBooleanなどのオブジェクトはリテラルまたは静的ファクトリメソッドを使用する方が良いでしょう。
제이온
제이온
제이온
제이온

2024年4月28日

1人アプリ開発ではどのようなテストを実施すべきか?1人アプリ開発では、人間テスト、統合テスト(プロバイダー)、ユニットテストの順に実施するのが効率的です。
Alien Story
Alien Story
Alien Story
Alien Story

2024年5月16日

投資方法論(株式)米国株式ETFに無限買増し法とセブンスプリットを適用した投資方法論を紹介します。銘柄選定、分割売買タイミング設定などをRPAで自動化して運用します。
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

2024年4月20日

社会調査士2級 実技 筆答式 試験対策:過去問と未来産業科学高校試験会場レビュー社会調査士2級の実技試験(筆答式)の過去問と、未来産業科学高校の試験会場に関する情報をまとめました。2022年第2回試験の過去問12問と、試験会場の情報を確認できます。
롱롱이
롱롱이
롱롱이
롱롱이

2024年4月27日

[GMAT]過去問対策方法(+学習プランの書き方)GMAT試験対策方法と学習プラン作成方法を共有するブログ記事です。OGの繰り返し学習とCR、Math問題のタイプ分析、そして効果的な学習プランの活用法などを紹介します。
롱롱이
롱롱이
롱롱이
롱롱이

2024年5月25日

[Spring] @Async の使用方法Spring @Asyncを使用して、Javaの非同期処理を簡単に実装する方法を学びましょう。スレッドプールの設定と、Future、ListenableFuture、CompletableFutureの使用方法について説明します。
제이온
제이온
제이온
제이온

2024年4月25日