ふと、C++のテンプレートで素数の計算をさせてみようと思い立ち、コードを書いてみた。書いた後でググってみたら同じことを考えた人がやっぱりいたけど気にしない。これは車輪の再発明ではなくてパズル遊びだから。コードの書き方も違うしね。因みに、このテンプレートによる素数計算ではコンパイル完了時に既に素数が求まっており、実行ではそれを表示するだけなので、ある意味、最速の素数計算プログラムと言えるかも。 短いコードだから読めばわかると思うけど、一応説明しておく。Primesに渡したテンプレートパラメータnを1ずつ減らしながら順番にPrimeに渡して、それが素数なら出力する。素数の判定では、Primeのテンプレートパラメータdの初期値を2とし、dを増やしながらnとの剰余を求め、途中で剰余0となれば特殊化されたPrime<n, d, 0, false>が呼ばれて何もしない。dについてはテンプレートの入れ子