所定ビット数の素数を並列に複数生成する情報処理装置であって、入力された数値が素数であるか否かを判定しかつ素数である場合に該数値を出力する複数の判定手段と、複数の乱数シードを取得し、1以上の前記判定手段が所属するそれぞれの判定グループに当該複数の乱数シードの何れかを対応付ける対応付け手段と、前記乱数シードを用いて生成した乱数を、該乱数シードに対応付けられた判定グループに入力する制御手段と、を備え、前記制御手段は、着目乱数シードを用いて、乱数を生成する乱数生成系列を初期化する初期化手段と、前記乱数生成系列を用いて乱数を生成する乱数生成手段と、前記乱数のビット列を前記所定ビット数のビット列へと分割する分割手段と、前記分割によって得られたそれぞれのビット列が示す数値を、前記着目乱数シードに対応付けられた前記判定グループを構成する前記判定手段の何れかへと出力する出力手段と、を備えることを特徴とする情報処理装置。生成しようとする素数の数を示す入力を受け付ける入力手段と、前記生成しようとする素数の数と、前記判定手段のいずれかが既に出力した素数の数との差以下となるように前記判定グループの数を定め、前記判定手段のそれぞれについて所属する前記判定グループを決定する分配手段と、を備えることを特徴とする、請求項1に記載の情報処理装置。前記分配手段は、いずれかの前記判定手段が素数を出力した際に、前記判定グループの数を再び定め、前記判定手段のそれぞれについて所属する前記判定グループを再決定することを特徴とする、請求項2に記載の情報処理装置。前記分配手段は、着目判定グループに属する前記判定手段が素数を出力した際に、前記生成しようとする素数の数と、前記判定手段のいずれかが既に出力した素数の数との差が、前記判定グループの数よりも多い場合、当該着目判定グループに属する前記判定手段のそれぞれを、当該着目判定グループ以外の判定グループのいずれかに所属させることを特徴とする、請求項3に記載の情報処理装置。前記分配手段は、前記判定グループの数が、初期化された前記乱数生成系列の数以下となるように、前記判定グループの数を定めることを特徴とする、請求項2乃至4の何れか1項に記載の情報処理装置。前記判定手段が出力した素数を用いて鍵ペアを生成する鍵生成手段をさらに備えることを特徴とする、請求項1乃至5の何れか1項に記載の情報処理装置。所定ビット数の素数を並列に複数生成する情報処理装置が行う情報処理方法であって、前記情報処理装置は、入力された数値が素数であるか否かを判定しかつ素数である場合に該数値を出力する複数の判定手段を備え、前記情報処理方法は、複数の乱数シードを取得し、1以上の前記判定手段が所属するそれぞれの判定グループに当該複数の乱数シードの何れかを対応付ける対応付け工程と、前記乱数シードを用いて生成した乱数を、該乱数シードに対応付けられた判定グループに入力する制御工程と、を含み、前記制御工程は、着目乱数シードを用いて、乱数を生成する乱数生成系列を初期化する初期化工程と、前記乱数生成系列を用いて乱数を生成する乱数生成工程と、前記乱数のビット列を前記所定ビット数のビット列へと分割する分割工程と、前記分割によって得られたそれぞれのビット列が示す数値を、前記着目乱数シードに対応付けられた前記判定グループを構成する前記判定手段の何れかへと出力する出力工程と、を含むことを特徴とする情報処理方法。コンピュータを、請求項1乃至6の何れか1項に記載の情報処理装置の各手段として機能させるための、コンピュータプログラム。並列処理環境が一般的になったため、処理負荷の大きな鍵ペア生成処理を並列化して高速化することが考えられる。しかしながら、エントロピーは物理現象の観測によって生成され、高速化が難しいため、素数生成においてはシード生成がボトルネックになる。一方で高速化のために単一シードを複数回利用して素数を生成し、この素数を用いて鍵ペアを生成する場合、生成した鍵ペアの一様性及び予測困難性が低くなるため、通信の安全性が低下する。本発明は、乱数生成能力と素数判定能力とを有する情報処理装置において、より効率的に素数を生成することを目的とする。本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、所定ビット数の素数を並列に複数生成する情報処理装置であって、入力された数値が素数であるか否かを判定しかつ素数である場合に該数値を出力する複数の判定手段と、複数の乱数シードを取得し、1以上の前記判定手段が所属するそれぞれの判定グループに当該複数の乱数シードの何れかを対応付ける対応付け手段と、前記乱数シードを用いて生成した乱数を、該乱数シードに対応付けられた判定グループに入力する制御手段と、を備え、前記制御手段は、着目乱数シードを用いて、乱数を生成する乱数生成系列を初期化する初期化手段と、前記乱数生成系列を用いて乱数を生成する乱数生成手段と、前記乱数のビット列を前記所定ビット数のビット列へと分割する分割手段と、前記分割によって得られたそれぞれのビット列が示す数値を、前記着目乱数シードに対応付けられた前記判定グループを構成する前記判定手段の何れかへと出力する出力手段と、を備えることを特徴とする。乱数生成能力と素数判定能力とを有する情報処理装置において、より効率的に素数を生成することができる。以下、本発明の実施形態の一例を図面に基づいて説明する。ただし、本発明の範囲は以下の実施形態に限定されるものではない。[実施例1]<システム全体構成>図1Aは、実施例1に係る情報処理装置100の例を示す。本実施例に係る情報処理装置100は、所定ビット数の素数を並列に複数生成することができる。情報処理装置100は、CPU101、グラフィックボード102、主メモリ105、メモリコントローラハブ106、入出力コントローラハブ107、NIC108、記憶装置109、及び外部接続ポート110を含む。CPU101は、主メモリ105又は記憶装置109に記録されたプログラムコンピュータプログラムに従って、情報処理装置100の動作の少なくとも一部を制御する中央演算装置である。CPU101は、CPUコアと呼ばれる演算処理部を複数有していてもよい。さらに、CPU101は物理的な雑音をビット列エントロピーとして取得することができる。物理的な雑音は任意のものでありうるが、例えば記憶装置109のシークタイム、タイミング、主メモリ105の状態、その他物理センサ不図示の出力などが挙げられる。グラフィックボード102は、GPU103とビデオメモリ104とを含む。グラフィックボード102は通常、画像処理に特化した拡張ボードである。例えばグラフィックボード102は、映像信号を取得し、モニタ112に映像を出力することができる。グラフィックボード102についての詳細は後述する。主メモリ105は、CPU101を制御するプログラムを格納することができる。主メモリ105はまた、CPU101の動作中にデータを一時的に記憶することができる。主メモリ105は、例えばRAMでありうる。メモリコントローラハブ106は、リンク113、114、115及び116を介してそれぞれCPU101、主メモリ105、グラフィックボード102及び入出力コントローラハブ107と接続されている。メモリコントローラハブ106は、主メモリ105、グラフィックボード102及び入出力コントローラハブ107の間のデータ転送を制御する。入出力コントローラハブ107は、リンク117、118及び119を介してそれぞれNIC108、記憶装置109及び外部接続ポート110と接続されている。入出力コントローラハブ107は、メモリコントローラハブ106、NIC108、記憶装置109及び外部接続ポート110の間のデータ転送を制御する。NIC108は、ネットワークに接続するための通信インターフェイスである。NIC108は例えば、有線LAN、無線LAN、又はBluetooth用の通信カードなどでありうる。記憶装置109は、CPU101が実行するプログラム、CPU101が処理に用いるデータ、及び外部から取得したデータなどを格納する。記憶装置は例えば、ハードディスクのような磁気記憶装置、又はSSDのようなフラッシュメモリでありうる。情報処理装置100は、複数の記憶装置109を有していてもよい。また記憶装置109を介して、記憶媒体からプログラムを含むデータを読み出すこと、及び記憶媒体にデータを書き出すことが可能であってもよい。プログラムコードを供給するための記憶媒体としては、例えば、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、並びにCFカード及びSDカードなどのフラッシュメモリ、などを用いることができる。外部接続ポート110は、外部機器を情報処理装置100に接続するためのポートである。外部接続ポート110は、例えばUSBポート、IEEE1394ポート、HDMIポートなどでありうる。この外部接続ポート110に入力装置/出力装置111を接続することで、情報処理装置100は入力装置/出力装置111との間でデータを送受信することができる。情報処理装置100は、複数の外部接続ポート110を有していてもよい。入力装置/出力装置111は、外部接続ポート110を介して情報処理装置100にデータを入力する、又は出力する機器である。入力装置111は例えば、キーボード、マウス、イメージスキャナなどでありうる。出力装置111は例えば、プリンタなどでありうる。モニタ112は、情報処理装置100が出力するデータを視覚的に表示する装置である。モニタ112は、グラフィックボード102が有する外部出力ポート、例えばアナログRGBポート又はDVIポートなどに接続されることができる。またモニタ112は、外部接続ポート110に接続されてもよい。モニタ112の例としては、例えば液晶モニタなどが挙げられる。リンク113、114、115、116、117、118、及び119は内部バスである。リンク113、114、115、116、117、118、及び119は例えば、PCI又はPCIエクスプレスなどのバスでありうる。以上、本実施例に係る情報処理装置100として利用可能なハードウェア構成の一例を示した。以上説明された情報処理装置100は、例えば、パーソナルコンピュータなどを用いて実現することができる。しかしながら、本実施例に係る情報処理装置100は上述の構成に限定されるものではない。例えば変形例において、情報処理装置100はグラフィックボード102を含まずにGPU103を含んでいてもよい。この場合、GPU103が主メモリ105に対してデータを読み書きできるように、情報処理装置100を構成すればよい。また、CPU101にGPU103を統合してもよい。さらには、GPU103はメモリコントローラハブ106に統合されていてもよいし、ビデオメモリ104は主メモリ105に統合されていてもよい。このような場合、情報処理装置100はグラフィックボード102を有さなくてもよい。もっともこのような場合にも、GPU103やビデオメモリ104の機能は通常、情報処理装置100のいずれかの構成要素に含まれる。他の実施例として、CPUとGPUとの少なくとも一方として、暗号処理に特化したハードウェアである暗号アクセラレータを用いてもよい。また、CPUとGPUとの少なくとも一方として、演算処理が可能なIPコアを用いてもよい。<グラフィックボード102の構成>次に、図1Bを参照して、グラフィックボード102について詳細に説明する。図1Bは、本実施例に係るグラフィックボード102の構成の一例を示す。グラフィックボード102は、GPU103及びビデオメモリ104で構成される。ビデオメモリ104は、表示する映像情報を保持するためのフレームバッファとして利用されるメモリ領域である。GPU103は、リンク118を介してビデオメモリ104に接続される。GPU103はCPU101及びメモリコントローラハブ106を介して映像信号を取得し、描画処理を行う。GPU103は、1つ以上のGPUコア201202と1つ以上のキャッシュメモリ203204とから構成される。図1Bの例においてグラフィックボード102は、2つのGPUコア201202と、2つのキャッシュメモリ203204とを含むが、これには限定されない。描画処理はGPUコア201202がそれぞれ行う。GPUコア201202が並列して処理を行うことにより、描画処理が高速化される。並列して動作するGPUコア201202の数を増やすことにより、より高速な描画処理が実現されうる。近年では、数百個のGPUコア201202の並列動作による、高速な描画処理が実現されている。このようにGPUコア201202は、描画処理を目的とした構成を有する。したがってGPUコア201202は通常、物理的なセンサを持たないため、物理的な雑音をビット列エントロピーとして取得することができない。<素数鍵ペアの生成方法>図2及び図6を参照して、本実施例における情報処理装置100の動作を説明する。図2は、本実施例における処理の一例を示すフローチャートである。図2は特に、素数生成処理と、生成した素数を利用して鍵ペアを生成する処理を示している。また、情報処理装置100の機能構成を図6に示す。図6に示す各部の機能は、例えばCPU101が主メモリ105又は記憶装置109に格納されるプログラムを実行することと、CPU101の制御の下でGPU103がプログラムの一部を実行することと、によって実現されうる。ステップS201においてCPU101は並列度を決定する。この処理は、分配部650が行うことができる。本明細書において並列度とは、並列に生成される鍵ペアの数又は素数の数を意味する。通常は、生成しようとする素数又は鍵ペアの数を並列度とすればよい。例えば、鍵ペアを5つ生成しようとする場合、並列度を5とすればよい。しかしながら、並列度の決定方法はこれに限定されない。例えば、CPU101が有するコア数とGPUコア201202の数との少なくとも一方を用いて、並列度を決定してもよい。このとき、並列度を生成しようとする鍵ペア数以上にすることにより、所望の数の鍵ペアを高速に作成することができる。例えば、生成しようとする鍵ペア数が3であり、CPU101のコア数が2であり、GPUコア201202の数が36である場合について考える。後述のように、GPUコアは並列度の数のグループに分けられる。それぞれのグループを同じ数のGPUコアによって構成することにより、各グループの処理速度を平準化することができる。このことは、GPUコアの数を割り切ることができるように並列度を決定することによって実現できる。また、それぞれのGPUグループを別々のCPUによって制御することにより、処理効率を向上させることができる。このことは、並列度をCPUコア数で割り切ることができるように、並列度を決定することによって実現することができる。これらの観点から、この例においては並列度を6に設定することができる。ステップS202でCPU101は、並列度の数だけの疑似乱数系列を初期化する。疑似乱数系列の初期化方法の詳細は後述する。ステップS203でCPU101は、GPUコア201202判定手段を並列度の数だけのグループ判定グループに分割する。この処理は、分配部650が行うことができる。そして、それぞれのグループをステップS202で生成した疑似乱数系列のいずれか、すなわち乱数シードのいずれか着目乱数シードに対応付ける。この処理は、対応付け部640が行うことができる。GPUコア201202の数がグループ数より小さい場合、1以上のGPUコア201202が複数のグループに所属するように、グループを形成してもよい。それぞれのグループに所属するGPUコアの数は等しくなくてもよい。しかしながら、各グループのトータル処理能力が均一となるようにグループ化することにより、ステップS205における素数判定処理に要する時間を各グループの間で平準化し、より高速に所定個数の鍵ペアを生成することができる。ステップS204でCPU101は、ステップS202で生成した疑似乱数系列のそれぞれを用いて乱数を生成する。ステップS205でGPU103は、ステップS204で生成された乱数ビット列の少なくとも一部を取得し、取得した数値が素数であるか否かを判定する。より詳細には、それぞれのGPUコアのグループに属するGPUコア201202は、着目乱数シードに対応付けられた擬似乱数系列を用いて生成された乱数ビット列の少なくとも一部を取得し、取得した数値が素数であるか否かを判定する。取得した数値が素数ではない場合には、GPUコア201202はさらなるビット列をCPU101から取得する。ステップS205における処理の詳細は後述する。ステップS206でCPU101は、素数と判定された数値を、それぞれのGPUコアのグループから取得し、この素数を用いて鍵ペア670を生成する。この処理は、鍵生成部660が行うことができる。素数から鍵ペアを生成する方法は任意であり、公開鍵暗号アルゴリズムごとに定められた方法を用いればよい。素数から鍵ペアを生成する方法は公知であるから、本明細書においてはその説明を省略する。また本実施例において、ステップS206を省略してもよい。この場合、本実施例に係る情報処理装置100は、素数を生成して出力することができる。以上のステップS204からS206をそれぞれの擬似乱数系列について繰り返すことにより、所望の数の鍵ペアを生成することができる。ステップS204からS206はシーケンシャルに実行してもよい。すなわち、1つの擬似乱数系列から得られた乱数を用いて対応するGPUコアのグループが素数判定を行い、素数を出力する。そして、別の擬似乱数系列から得られた乱数を用いて対応するGPUコアのグループが素数判定を行い、素数を出力してもよい。しかしながら、ステップS204からS206の処理は、それぞれの擬似乱数系列について並列に実行されてもよい。並列処理は、例えば以下のように実現できる。すなわち、主メモリ105又はビデオメモリ104に、それぞれの疑似乱数系列を用いて生成した疑似乱数を一時的に保持する領域を設ける乱数プール。同様に、主メモリ105又はビデオメモリ104に、それぞれの疑似乱数系列を用いて生成した素数を一時的に保持する領域を設ける素数プール。ステップS204においてCPU101は、ステップS205及びS206とは非同期に、それぞれの擬似乱数系列についての疑似乱数を生成して乱数プールに書き込む。ステップS205においてそれぞれのGPUグループに属するGPUコア201202は、ステップS204及びS206とは非同期に、対応する擬似乱数系列を用いて生成された疑似乱数が乱数プールに保持されているか否かを判定する。対応する擬似乱数が保持されている場合には、GPUコア201202は対応する疑似乱数の少なくとも一部を読み出し、素数判定を行う。そしてGPUコア201202は、素数であると判定された数値を素数プールに書き込む。ステップ206においてCPU101は、ステップS204及びS205とは非同期に、素数プールに素数が保持されているか否かを判定する。素数プールに素数が保持されている場合には、CPU101は素数プールから素数を読み出し、鍵ペアを生成する。<疑似乱数系列の生成方法>図3を参照して、ステップS202における処理の詳細を説明する。図3は、ステップS202における処理の一例を示すフローチャートである。CPU101は、図3のフローチャートを並列度の数だけ繰り返すことにより、並列度の数だけの擬似乱数系列を初期化する。ステップS301においてCPU101は、エントロピーソースからエントロピーを取得する。前述の通り、記憶装置109のシークタイム、タイミング、主メモリ105の物理状態、その他物理センサの測定値、及びこれらの組み合わせなどを、エントロピーソースとして用いることができる。ステップS302においてCPU101は、十分なエントロピーを取得したか否かを判断する。エントロピーが十分であるか否かの判断は、生成する鍵ペア又は素数のビット長に従って決定できる。例えば、1024ビットのRSA暗号用の鍵ペアを生成する場合、エントロピーは80ビット以上であればよい。また、2048ビットのRSA暗号用の鍵ペアを生成する場合、エントロピーは112ビット以上であればよい。生成する鍵ペアのビット長に従う必要なエントロピーは公知であるから、本明細書においては説明を省略する。十分なエントロピーを取得できた場合は、処理はステップS303へ進む。十分なエントロピーを取得できなかった場合は、処理はステップS301へ戻る。処理がステップS301へ戻る場合、再度エントロピーの取得を試みても十分なエントロピーを取得できない可能性がある。したがって、ステップS302からS301へ戻る際には、所定時間だけ処理を停止し、すなわちウェイトを置き、エントロピーソースにエントロピーが溜まるのを待ってもよい。ステップS303においてCPU101は、ステップS302で取得したエントロピーを疑似乱数の乱数シードとして、疑似乱数系列を初期化する。この処理は、制御部630の初期化部632が行うことができる。また、取得部620はシード610を取得することができる。擬似乱数系列の初期化は、使用する擬似乱数生成アルゴリズムに応じて行えばよい。例えば、FIPS186-2Appendix3.1に規定されている疑似乱数生成アルゴリズムを用いる場合、XKEYにエントロピーを入力することにより疑似乱数系列を初期化すればよい。本実施例において使用される擬似乱数生成アルゴリズムは特に限定されず、例えばANSIX9.42-2001AnnexC.1に規定されているような方法を用いることもできる。<疑似乱数及び素数生成方法>図4を参照して、ステップS205の処理の詳細について説明する。図4は、ある1つの擬似乱数系列に対応付けられたGPUコアグループの処理を示す図である。他の擬似乱数系列に対応付けられたGPUコアグループも、以下の説明と同様に処理を行うことができる。ステップS204においてCPU101は、それぞれの擬似乱数系列を用いて擬似乱数を生成する。この処理は、制御部630の乱数生成部634が行うことができる。擬似乱数401は、1つの擬似乱数系列Aを用いて生成された擬似乱数である。ステップS205においてCPU101は、擬似乱数401を、生成しようとする素数のビット長毎に分割する。この処理は、制御部630の分割部636が行うことができる。そしてCPU101は、分割することによって得られた数値のそれぞれを、擬似乱数系列Aに対応するグループに属するGPUコアのそれぞれに入力する。この処理は、制御部630の出力部638が行うことができる。同じ数値が異なるGPUコアに入力されないようにすることで、素数判定処理を効率化することができる。そしてGPUコアは、入力された数値が素数であるか否かを判定する。素数判定アルゴリズムとしては、公知の任意のものを用いることができる。例えばGPUコアは、FIPS186-2Appendix2に規定されている素数判定アルゴリズムを用いることができる。しかしながら、本実施例で用いられる素数判定アルゴリズムはこれに限定されない。GPUコア201202が、入力された数値が素数であると判定した場合、GPUコア201202は素数をCPU101又は素数プールなどのメモリに送出する。一方でGPUコア201202が、入力された数値は素数ではないと判定した場合、GPUコア201202はさらなるビット列をCPU101から取得する。ここで擬似乱数系列Aに対応付けられたグループに属するGPUコア201202は、擬似乱数401を分割することによって得られた数値のうち、まだGPUコアに入力されていない数値を取得すればよい。擬似乱数401を分割することによって得られた数値のうち、まだGPUコアに入力されていない数値が存在しない場合、CPU101は擬似乱数系列Aを用いて新たな擬似乱数を生成する。CPU101は、擬似乱数401を分割することによって得られた全ての数値を何れかのGPUコアに入力した際に、新たな擬似乱数を生成してもよい。一方でCPU101は、擬似乱数系列Aに対応付けられたグループに属するGPUコアのいずれかが、入力された数値が素数であると判定した場合、擬似乱数系列Aに対応付けられたグループに属する全てのGPUコアの処理を中断させることができる。以上に説明したように、本実施例においては、CPU101で疑似乱数を生成し、GPU103で疑似乱数から得られた数値が素数であるか否かを判定することによって、素数を生成することができる。特に、生成する素数の数又は鍵ペアの数に対応する数の疑似乱数系列を初期化することにより、一様性が高く、かつ予測困難性が低い素数を、高速に生成することができる。1つの擬似乱数系列すなわちエントロピーからは1つの素数のみを生成することにより、より予測困難性が低い素数を生成することができる。したがって、いくつかのGPUコアが並列して1つの擬似乱数系列に基づく乱数が素数であるか否かを判定する場合、1つのGPUコアが素数を発見した場合、他のGPUコアの処理は中断される。すなわち、他のGPUコアの処理は無駄になる。並列度、すなわちGPUコアグループの数をmとし、1つのGPUコアグループに属するGPUコアの数をnとする。本実施例の方法によれば、乱数が素数であることをあるGPUコアが発見した場合、CPU101が処理を中断させるGPUコアの数はn-1個である。一方、GPU103が有する全てのGPUコアに、同一の疑似乱数系列に基づく乱数が素数であるか否かを判定させる場合、乱数が素数であることをあるGPUコアが発見した場合にCPU101が処理を中断させるGPUコアの数はn×m-1個となる。このように、GPUコアをグループ化し、それぞれのグループに異なる擬似乱数系列に基づく乱数が素数であるか否かを判定させる本実施例は、無駄になる処理が少ないため、より効率的な処理を実現できる。[実施例2]実施例1では、あらかじめ決定した並列度に基づいて疑似乱数生成及び素数判定を行った。実施例2では、並列度を動的に変化させながら疑似乱数生成及び素数判定を行う。実施例2に係る情報処理装置100の構成は、実施例1と同様である。以下では、実施例2における処理のうち、実施例1とは異なる処理について説明する。したがって、実施例1と同様の処理については説明を省略する。<素数鍵ペアの生成方法>図5を参照して、本実施例における情報処理装置100の動作を説明する。図5は、本実施例における処理の一例を示すフローチャートである。図5には、素数生成処理と、生成した素数を利用した鍵ペア生成処理とが示されている。なお、図5のフローチャートの処理は、CPU101が記憶装置109に格納されているプログラムを実行すること、及びCPU101の制御の下でGPU103がプログラムの一部を実行することによって実現されうる。ステップS501においてCPU101は、エントロピーソースからエントロピーを取得し、取得したエントロピーのビット数を算出する。さらに、エントロピーのビット数を、生成しようとする鍵ペアに応じたビット数で割り、得られた値を並列度の初期値とする。生成しようとする鍵ペアに応じた必要なエントロピー数については前述したとおりである。ここで並列度は、取得したエントロピーから生成可能な素数又は鍵ペアの数を意味する。エントロピーのビット数を、生成しようとする鍵ペアに応じたビット数で割ると、初期化可能な乱数生成系列の数を得ることができる。このようにして、並列度判定グループの数を、初期化された乱数生成系列の数以下とすることができる。なお、並列度の決定方法はこの方法に限定されず、CPU101のコア数、GPUコア201202の数、又はこれらの組み合わせに従って、実施例1と同様に決定してもよい。例えば、エントロピーのビット数を、生成しようとする鍵ペアに応じたビット数で割ることによって得られた値が並列度の上限となるように、並列度を適宜決定してもよい。また、CPU101のコア数又はGPUコア201202の数に応じた値が並列度の下限となるように、並列度を決定してもよい。ステップS502でCPU101は、実施例1と同様に、並列度と同数の疑似乱数系列を初期化する。また、鍵ペア生成が完了して利用が終わった疑似乱数系列を削除する。ステップS503でCPU101は、実施例1と同様に、GPUコア201202を並列度と同数のグループに分け、それぞれのグループに別々の疑似乱数系列を対応付ける。ステップS504でCPU101は、実施例1と同様に、ステップS502で初期化した疑似乱数系列のそれぞれを用いて乱数を生成する。ステップS505でGPUコアのグループのそれぞれは、実施例1と同様に、対応づけられた疑似乱数系列が生成した疑似乱数が素数であるか否かを判定する。ステップS506でCPU101は、実施例1と同様に、生成した素数を用いて鍵ペアを生成する。実施例1と同様に、ステップS506は省略されてもよい。実施例1のステップS205においてそれぞれのGPUコア201202は、CPU101から、乱数を分割することによって得られた数値を繰り返し取得した。しかしながら本実施例のステップS505においてそれぞれのGPUコア201202は、CPU101から、乱数を分割することによって得られた数値を1回だけ取得してもよい。またステップS505においてそれぞれのGPUコア201202は、対応付けられた擬似乱数系列を用いて生成された乱数を分割することによって得られた数値のうち、まだGPUコアに入力されていない数値がなくなるまで、数値を取得してもよい。ステップS507でCPU101は、所望の数の鍵ペア又は素数が生成されたか否かを判定する。所望の数の鍵ペアが生成されている場合、処理は終了する。所望の数の鍵ペアが生成されていない場合、処理はステップS508に進む。ステップS508でCPU101は並列度を更新する。CPU101は、ステップS501と同様に並列度を更新することができる。その後、処理はステップS502に戻る。以上のようにして、所望の数の素数又は鍵ペアを生成することができる。本実施例ではステップS508において並列度が更新されたが、並列度の更新は図5のフローチャートとは独立に行われてもよい。例えば、所定の時間間隔で並列度の更新が行われてもよい。また、いずれかのGPUコア201202が、取得した数値が素数であると判定した際に、並列度の更新が行われてもよい。この場合、生成する残りの素数の数に従ってGPUコアのグループ分けを変更再決定することができる。すなわち、生成する残りの素数の数以下となるように並列度を決定することができる。生成する残りの素数の数は、生成しようとする素数の総数と、GPUコア201202のいずれかが既に出力した素数の数との差として求めることができ、並列度をこの差以下となるように決定すればよい。生成しようとする素数の総数は、例えば、入力部680がユーザ入力を介して取得することができる。本実施例においては、ステップS508において並列度を更新した後で、ステップS503において再びGPUコアのグループ分けを行う。ステップS503においてCPU101は、素数が発見された疑似乱数系列に対応するグループ着目判定グループに属するGPUコア201202のみを、グループ分けの対象としてもよい。すなわち、着目判定グループに属するGPUコアを、着目判定グループ以外のグループのいずれかに所属されてもよい。一方でCPU101は、全てのGPUコア201202をグループ分けの対象としてもよい。素数が発見された疑似乱数系列に対応するグループに属するGPUコア201202だけをグループ分けの対象とする場合は、再割り当てするGPUコア201202が限定されるので、各グループのトータル処理能力を均一化することが困難になる。一方で、現在処理中のGPUコア201202と独立してグループ化処理ができるので、GPUコアの制御を容易に行うことができる。後者のように全てのGPUコア201202をグループ分けの対象とする場合は、各グループのトータル処理能力を均一化することは容易となる。しかしながら、現在処理中のGPUコア201202を同期しなければいけないため、GPUコアの制御が複雑になる。ステップS502からS507は、シーケンシャルに実行されてもよい。しかしながら、これらは並列に実行されてもよい。並列処理は、例えば以下のように実現できる。すなわち、主メモリ105又はビデオメモリ104に、それぞれの疑似乱数系列を用いて生成した疑似乱数を一時的に保持する領域を設ける乱数プール。同様に、主メモリ105又はビデオメモリ104に、それぞれの疑似乱数系列を用いて生成した素数を一時的に保持する領域を設ける素数プール。ステップS504においてCPU101は、他のステップとは非同期に、それぞれの擬似乱数系列についての疑似乱数を生成して乱数プールに書き込む。ステップS505においてそれぞれのGPUグループに属するGPUコア201202は、他のステップとは非同期に、対応する擬似乱数系列を用いて生成された疑似乱数が乱数プールに保持されているか否かを判定する。対応する擬似乱数が保持されている場合には、GPUコア201202は対応する疑似乱数の少なくとも一部を読み出し、素数判定を行う。そしてGPUコア201202は、素数であると判定された数値を素数プールに書き込む。ステップ506においてCPU101は、他のステップとは非同期に、素数プールに素数が保持されているか否かを判定する。素数プールに素数が保持されている場合には、CPU101は素数プールから素数を読み出し、鍵ペアを生成する。並列実行時におけるステップS502及びS503では、他の並列処理で利用中の疑似乱数系列やGPUコア201202を除外して処理を実施してもよい。すなわち、ステップS502においては、前のサイクルにおいて既に初期化されており、まだ素数が発見されていない擬似乱数系列については、初期化を行わなくてもよい。この場合ステップS508においては、続くステップS502で初期化する必要のない擬似乱数系列の数と、エントロピーのビット数を、生成しようとする鍵ペアに応じたビット数で割ることによって得られる値との和を、並列度の上限としてもよい。以上説明したように、本実施例によれば、CPU101で疑似乱数を生成し、GPU103で疑似乱数を素数判定することによって、素数を生成することができる。特に、取得可能なエントロピーのビット数及び鍵ペアのビット数などに応じて、並列に生成する鍵ペアの数を動的に変更することにより、一様性が高く、予測困難性が低い素数を効率的に生成することができる。また、実施例1の場合、GPUコア201202のグループ分けは固定されている。したがって、処理が完了したグループに属するGPUコア201202はスリープしてしまう。一方、本実施例では、全ての処理が完了するまでGPUコア201202のグループ分けを変更する。したがって、処理が完了したグループに属するGPUコア201202をさらなる素数判定処理に用いることができる。このように実施例2によれば、より効率的に素数を生成することができる。他の実施形態本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体などとしての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに本発明を適用しても良いし、また、一つの機器からなる装置に適用しても良い。このプログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータなど、様々な形態をとることができる。プログラムを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、及びDVDなどを用いることができる。また、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、プログラムをハードディスクなどの記憶媒体にダウンロードすることによっても、プログラムを供給することができる。自動インストール機能を含む圧縮されたファイルをハードディスクなどの記憶媒体にダウンロードすることによっても、プログラムを供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても、プログラムを供給できる。つまり、プログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバやFTPサーバなども、本発明の範囲に含まれる。プログラムを暗号化し、CD-ROMなどの記憶媒体に格納してユーザに配布することもできる。さらに、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることもできる。ユーザはこの鍵情報を使用することにより、暗号化されたプログラムを復号してコンピュータにインストールすることもできる。また、コンピュータ上で稼働しているOSオペレーティングシステムなどに処理の一部又は全部を行わせ、その処理によって前述した実施例の機能が実現されるプログラムも、本発明の範囲に含まれる。さらには、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれたプログラムコードに従って、この機能拡張ボードや機能拡張ユニットに備わるCPUなどが、処理の一部又は全部を行ってもよい。本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形各実施例の有機的な組合せを含むが可能であり、それらを本発明の範囲から排除するものではない。本発明の様々な例と実施例を示して説明したが、当業者であれば、本発明の趣旨と範囲は、本明細書内の特定の説明に限定されないことを理解するだろう。なお、上述した実施例の各変形例を組み合わせた構成も全て本発明に含まれる。本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムをネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ又はCPUやMPUなどがプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。