/* ######################### # source-encoding >> UTF-8 # # 素因数分解 # author : 河合 佑太 # ########################## */ //必要な関数やクラスライブラリの宣言ヘッダーをインクルード #include #include //ネームスペースstdを省略するための宣言 using namespace std; /* * 実験のデフォルトで使う型は符号なしint型にしました。 * より大きな数を扱いたい場合は, * typedef unsigned long long USINT; * の行をコメント解除し、 * typedef unsigned int USINT; * をコメントアウトしてください。 */ typedef unsigned int USINT; //typedef unsigned long long USINT; //アルゴリズムはシェルスクリプト版と同様 void solver1(USINT targetNum) { USINT dividNum = 2; cout << targetNum << ">> "; USINT targetSqrt = sqrt((double)targetNum); while(dividNum <= targetSqrt) { if((targetNum % dividNum) == 0) { targetNum = targetNum / dividNum; targetSqrt = sqrt((double)targetNum); cout << " " << dividNum; }else{ dividNum++; } } if(targetNum != 1){ cout << " " << targetNum; } cout << endl; } //プログラムのエントリーポイント int main() { USINT num; //cout << "What's the number?"; //cin >> num; for(num=1; num <= 10000000; num++) //ここのループ回数を調節して各実験を行う { //関数solver1を素因数分解すべき数を引数にして //呼び出す solver1(num); } //以下のコードにより処理系依存する各型の有効範囲を検証できます //cout << numeric_limits::max() << endl; //cout << numeric_limits::max() << endl; //cout << numeric_limits::max() << endl; //cout << numeric_limits::max() << endl; return 0; }