C/C++の宿題やらせてください。8代目。
■ このスレッドは過去ログ倉庫に格納されています
0718デフォルトの名無しさん
NGNG[考え方]
除数をkとすると、まず、kに素因数となり得る最小の数2を設定する。
kがnの約数かどうかを調べ、約数であれば、kの値を出力する。
このとき、n/kは、それまでに見つかっていない素因数の全ての積に
なるので、nの値をn/kの値で置き換える。
同じ素因数がいくつもある場合があるので(上例の2および3)、kが
nの約数である限り、同じkの値で、この処理を繰り返す。
nがkで割り切れなくなった時は、kの値を1増やし、以上に述べた処理を
繰り返す。このとき、3以上のkの値については奇数だけを相手にすればよい。
また、一つのnの値については、kが√nを越えない最大の整数になるまで
行えばよい(nの値は変わっていくことに注意しよう)。ただし、kが√nを越えた
ときには、nは1以外には√n以下の約数をもたないことになるので、そのときの
nの値は素数であるか、1であるかのいずれかである。
sqrt((double)n)か(int)sqrt((double)n)を使うらしいのですが・・・。
■ このスレッドは過去ログ倉庫に格納されています