約数を洗い出す

整数nを割り切る全ての約数を洗い出して表示します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. コンソールから入力した整数nを割り切る全ての約数を洗い出して表示します。
    例えばnが12のときは、次のようになります。
    1, 2, 3, 4, 6
    またnが20のときは、次のようになります。
    1, 2, 4, 5, 10
  2. 繰り返し命令(for)は、1から初めてn/2までループすることになるでしょう。
    また割り切れるか否かを調べるには、剰余を求める演算子(%)を使います。

【演習】

  1. 寺尾あきら主演の映画「博士の愛した数式」で整数論に関係する面白い話が取り上げられていました。
    その一部を紹介しながらプログラミングの説明をします。
  2. 完全数を求めて表示します。
    「博士の愛した数式」でも紹介されています。
    1. 完全数とは「自分自身を除く約数の和が元の数と等しい」数のことです。
      【例】
      28の約数は 1,2,4,7,14 で
      1+2+4+7+14=28
    2. 10000以下の完全数を求めて表示して下さい。
      完全数は意外に少なく1000以下では、3個しか見つかっていません。
      10000以下でも、4個ぐらいでしょうか。
    3. 完全数には面白い性質があって、1から始まる整数を順に加えると完全数になります。
      1+2+3+4+5+6+7=28
      見つけた完全数が、この規則に当てはまる事を確認するプログラムを作成して下さい。
    4. 余談ですが、25番目の完全数は、1987年11月に発見されました。
      アメリカの2人の高校生、ローラ・ニッケルとカート・ノルの2人は、大型コンピュータを1週間使って、この数に到達しました。
      なんと、13066桁の数だったのです。
      当時高価な大型コンピュータ(数百億円)を1週間も使って、お咎めはなかったのでしょうか?。 (^_^;)
      偶数の完全数を作り出す方法は、詳細は省きますがギリシャ時代に考え出されていました。
      しかし、奇数の完全数が存在するかどうかは、現在でもわかっていません。
  3. 「博士の愛した数式」にも登場する友愛数(友の数)を求めて表示します。
    1. 友愛数とは「約数の和がお互いの数になる」数のことです。
      【例】
      220の約数は
      1,2,4,5,10,11,20,22,44,55,110 で
      その合計は 284 になります。
      284の約数は
      1+2+4+71+142 で
      その合計は 220 です。
      従って 220と284は友愛数になります。
    2. 次に小さい友愛数は、パガニーニが16歳のときに見つけています。
      完全数は意外に少ないのですが、友愛数は結構存在するようです。
    3. 友愛数を見つけるプログラムを作成して下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門