高速なRust言語で開発されたSosu-Seisei-Sieveは、1から9999兆を超える京といった非常に大きな範囲での素数全数列挙ができるツールです。99京ぐらいまでは正確に動く仕組みです。巨大規模の素数列挙はごく限られた研究目的(計算数論、HPC性能検証、理論実験)においてのみ考えられるもので、一般的な用途は皆無です。
ある程度の範囲(例えば数千万~数十億)までの素数一覧は、インターネット上で公開されていることがあります。しかし兆クラスやさらに巨大な範囲の素数をすべて網羅したテキストファイルを自由にダウンロードできる状況は極めて稀です。
なぜなら兆クラスの巨大ファイルをホストし、自由にダウンロード可能なインフラは高コストであり、一般的なWebリソースで提供するのは非現実的です。また巨大な全素数リストが汎用用途で必要になるケースはほとんどなく、そのため一般には流通していません。
Sosu-Seisei-Sieveは、兆クラスの巨大範囲の素数列挙できるユニークなツールです。本プログラムは、極大スケールでの理論的挑戦や特定研究用途、あるいは個人の興味・実験的検証などで活用が期待できます。例えば、9999兆9999億9998万9999~9999兆9999億9999万9999の素数が欲しいときもすぐに入手できます。
Sosu-Seisei-Sieveは、1から京規模までの巨大範囲に対応し、並列化、柔軟な出力形式、分割出力、メモリ使用量・ETA表示など、多彩な機能を備えた素数生成ツールです。市販・公開されているデータを超えた大規模素数列挙に挑戦可能となります。
実際にSosu-Seisei-Sieveを使ってみよう
Windowsで動作させたい人は、exeの実行ファイルですぐに動作できます。Ubuntu系で動作させたい方はRust環境を用意してgit cloneからcargo runして実行してください。以下Windowsで実行してみましょう。
https://github.com/riragon/sosu-seisei
https://github.com/riragon/sosu-seisei/releases/tag/sosu
sosu-seisei-sieve.exeをダウンロードします。
野良アプリと同じなので自己責任で実行してください。
実行です。
素数を検出したい範囲を設定します。最大値は999999999999999999です。1~999999999999999999にすると、範囲が巨大すぎて終わりが見えないでしょう。メモリクラッシュするでしょう。なので現実的な範囲に設定してください。
素数とはいえ、ファイルサイズが随分と大きくなります。60分も出力すれば数百GBにもなるでしょう。外部ストレージなど利用できるように出力先を指定できます。
出力はテキスト、CSV、JSON形式を選べます。
Runを押せばすぐに実行されます。
ファイル分割を指定すれば、一定素数ごとにファイルを分割出力できます。縦えば1億個ごとで出力したいとか設定してください。
たった5分で455052511個の素数を発見できました。
こんな感じで素数のリストを得られます。
Sosu-Seisei-Sieveの技術説明
Sosu-Seisei-Sieveは、巨大な範囲で素数を効率的に抽出するために設計されたGUIツールです。このツールは以下のような特徴を持っています。
・大規模範囲対応: prime_min から prime_max までの非常に大きな整数範囲に対し、高速な篩(ふるい)処理を行います。
・並列処理対応: rayonクレートを用いた並列化により、大規模な計算を複数スレッドで並列実行できます。
・出力形式の選択可能: 素数リストは Text、CSV、JSON のいずれかの形式で出力可能です。
・分割出力機能 (split_count): 出力ファイルを一定の素数カウントごとに分割し、巨大な一枚岩ファイルではなく複数のチャンクで管理できます。
・GUI対応: eframeとeguiを用いたGUIで、簡易な設定画面や進捗バー、メモリ使用量、ETA(予測完了時間)などを確認できます。
素数生成ロジックには実際の素数篩アルゴリズムが実装されています。小規模範囲の素数リストを事前計算します。prime_minからprime_maxまでをセグメント(分割領域)ごとに処理します。この方式により巨大範囲を一度にメモリに載せる必要を避けられます。
Rayonによる並列実行で各セグメントを並列処理し、mpscチャンネルを用いてメインスレッドへ結果(素数リスト)を返します。一定数の素数ごとにファイルをローテーションさせる機能も実装済み。JSON出力時には配列形式で書き込み、区切りとなる都度新しいファイルに[…]を再度生成するといった柔軟な対応をしています。
膨大な範囲での素数生成を強力にサポートするRust製ツールです。GUIによる直感的な操作、並列処理での高速化、様々な出力形式、分割機能、メモリ使用量やETA表示といった実用的な機能が詰まっています。大規模な素数リストが必要な場合や、独自の素数計算ワークフローを構築したい場合、ぜひこのツールを試してみてください。