update.完全数とは小説「博士の愛した数式」で一般の人にも有名になった「完全数」ですが、その完全数を求めるプログラムです。完全数とは、その数自身を除く約数の和が、その数自身と等しい自然数のことです。なりますので、28は完全数ということになります。やって解くかこの問題を普通にプログラミングすると、約数を求め、その和がそれ自身の数と等しいかどうかを調べてゆくことになります。このやり方だと小さいほうから最初の4つまではすぐに求まりますが、5つ目、6つ目の完全数を求めようとすると、答えが出るまでかなりの時間待たされることになります。「完全数はメルセンヌ素数から導き出される」という性質を利用することにしました。求められることが証明されているそうです。奇数の完全数はまだ発見されていません。奇数の完全数が存在しないことはまだ証明がされていないそうです。}PrimeNumber.IsPrime()は、「ミラー・ラビン素数判定法」による素数判定メソッドで示したメソッドをそのまま利用しています。このクラスを使い、完全数を小さい順から8つ求めてみます。628496812833550336858986905613743869132823058430081399521288番目までの完全数ならば、すぐに求まります。long型では無理みたいです。ところで、1の位が6か8なのは、単なる偶然なんでしょうか?Webで調べたところ、見つかっている完全数の1の位はどれも、6か8みたいです。Pageで公開したものを加筆・修正したものです。upLoginユーザーは見つかりませんでした。