エラトステネスのふるい
素数のテーブルを作る関数を書きました.
有名なアルゴリズムですね.
//--------------------------------------------------------- // 素数の表を作成する // 引数 // table: 素数の表 // max: 表の最大値 // 表の中身 // 0 1 2 3 4 5 6 7 8 9 10 // 0 0 1 1 0 1 0 1 0 0 0 //--------------------------------------------------------- void primeTable(int *table, int max) { // 表を1で初期化 for(int i = 0; i < max; i++) table[i] = 1; // 0と1は素数じゃない table[0] = table[1] = 0; // ふるいにかけて,素数以外を0にする for(int i = 2; i < sqrt((float)max); i++) { if(table[i] == 0) continue; for(int j = i+1; j < max; j++) { if((j%i) == 0) table[j] = 0; } } }