- 420 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 01:22:53 ]
- >>368
>>389 直観的方法だけど、 ・必要な素数列を最初に求める。 ・1は定義より含まれないことが自明なので2から始める(2も自明のような気がするけど)。 ・任意の数の友愛数は二つ以上ないと仮定して(証明されてるのか知らん)、既に友愛数になった数はスルー。 ・求めた素数列を使って素因数分解してから組み合わせを網羅して約数列を作る。 ・約数列の合計を求めて元の数より小さければその数は既に調べているのでスルー(等しいということはないだろうけど一応含めてスルー)。 ・そうでない場合はその数の約数列を作り合計を求めて元の数と比較し、一致していれば友愛数。 ttp://www.geocities.jp/krtcw777/amicable_numbers.txt この方法だと>>368の環境で1000000まで30分どころか30秒もかからない(と思う。当方Pen4 2.53GHzで28秒)。
|

|