しばらく慣らし運転。
/*
* 10,000以下の素数を列挙する
*/
#include <iostream> // cout
#include <iomanip> // setw
#include <algorithm> // find_if
#include <functional> // not1, bind1st, modulus
#include <vector> // vector
int main() {
const int N = 10000;
std::vector<int> primes; // 素数表
primes.push_back(2);
std::cout << std::setw(8) << primes.back();
// 3以上の奇数iを割り切る素数が素数表に載っていないならiは素数なり。
for ( int i = 3; i < N; i +=2 ) {
if ( std::find_if(primes.begin(), primes.end(),
std::not1(std::bind1st(std::modulus<int>(),i)))
== primes.end() ) { // ↑ここらへんがマヂック
primes.push_back(i); // 素数表に追加
std::cout << std::setw(8) << i << std::flush;
}
}
return 0;
}