課題 7

 提出締切 : 11 月 15 日 提出先 :

以下の問に対するプログラムを作成し,実行例を示せ.それらすべてをひとつのノートブック内に納め,kadai7.nb という名前の添付ファイルにしてメールで送れ.

  1. 数を入力すると,その数の各桁の数字を逆の順にした数を答える関数 myReverse[n_] を作れ.ただし,末尾に 0 がある数は逆にしたときにその 0 が消えても構わない.できた関数を使用した例を以下に示す.
    関数 IntegerDigits あたりが参考になるであろう.(それだけではできないが.)

  2. 6 以上の偶数 n を与えたき,「n = (2 つの奇素数の和)」となるような奇素数(2 以外の素数)の組をすべて出力する関数 myGoldbach[n_] を作れ.関数の定義には Module を使用し,Module 内部で

      (1) n が 6 以上の偶数でない場合にエラーメッセージとともに動作を中断する.
      (2) 3 以上 n/2 以下(未満ではない)の素数 p すべてについて順に,n - p が素数で
        あるか否かを判定し,素数であったら p と n-p を Print 文で出力する.

    という動作を行うようにせよ.以下に myGoldbach[ ] の一部を示す.
    この例では Module の局所変数を i と p にしているがそのような名前でなくてよいし,局所変数の個数も 2 個である必要はない.
     If[ で始まり,]; で終わる 4 行の If 文がある.これは入力の n が整数であり,6 以上であり,偶数であるかを判定し,もしそうでなければ「Input an even integer ≧ 6.」 というメッセージを出力して中断する(Abort[ ])という動作を行う.君たちはそれ以下の (* ここを埋めよ *) というあたりを埋めて関数を完成させる.For[ ], Prime[ ], PrimeQ[ ], Print[ ] あたりを使用するとできるであろう.(計算効率がいいものにするにはもっと工夫がいるが,この課題では Mathematica で用意されている関数を用いてすっきり作ることができればよいとする.)
     以下に完成した関数の実行例を示す.
    なお,「6 以上の任意の偶数が必ず 2 個の奇素数の和で表せる」という命題はゴールドバッハ予想と呼ばれ,予想の真偽は未だ不明の未解決問題になっている.
以上.

トップページ