−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−    応用数学U                         1998.5.28/29    5.前回までの復習                     飯島 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−                 5−0 はじめに                  先週は大学祭で休みでした。前回は2週間前になりますが,前回の印象は,「まだまだ だなあ」という感じでした(ちょっと心配)。ただ,プログラミングのようなことは,い くら「ていねいに解説」しても,仕方がない面があります。ある程度体で覚えるというか ,数をこなす中で,「そういうものか」と理解するという面もあります。  自分なりに,「これはどういう意味なのか」という疑問を持ちつつ,「それはこういう 仕組みになっているのか」を,自分なりに解消しながら,作業を進めてください。  ところで,5/28は, 教育実習の挨拶に行かなければならない都合があって, 私は早めに 退室します。その後は「自習」ということになってしまいますので, 自習でも消化できる ような内容にしておきます。そういう意味で, 今回は, まず前回の「課題」で消化できな かった部分から取り組み直すことにしましょう。                  5−1 確認 次のような使い方はもういいですね。「意味が分からない」というようなことはないよ うにしておきましょう。 (1) FOR I = 1 TO 10      SUM = SUM + 10 NEXT PRINT SUM   (2) INPUT n FOR i = 1 to n IF n MOD i = 0 then Yakusuu = Yakusuu + 1 NEXT SELECT CASE Yakusuu CASE 1 PRINT "n = 1, isn't it?" CASE 2 PRINT n;" is a prime number" CASE ELSE PRINT n;" is not a prime number" END SELECT              5−2 「4−3」について +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ |          (1) 13579 を 4949 で割ったときの余り          | +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ これ, 意外にできていないんで, 「ゲッ」と思って見ていました。 最も簡単な答えは, print 13579 MOD 4949 です。 割り算には, 二つのものがあります。 / いわゆる割り算。あるいは, 実数の割り算。 \ 画面での表示は, / の逆向き。これは算数あるいは整数での割り算の「商」 MOD そして, これが「余り」 別解もないわけではありません。たとえば, 次は何をしているでしょう。 INPUT x           (ここで 13579を入力) INPUT y (ここで4949を入力) xx = x (x の値をxxにコピー) DO ct = ct + 1   xx = xx - y   PRINT ct ; xx LOOP UNTIL xx < y 少し表現を工夫すると, 次のようになります。 INPUT x           (ここで 13579を入力) INPUT y (ここで4949を入力) xx = x (x の値をxxにコピー) DO ct = ct + 1   xx = xx - y   PRINT x ; " = " ; y ; " * " ; ct ; " + "; xx LOOP UNTIL xx < y +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ |          (2) 約数の和とその数が等しいような数          | +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ これは, 「5−1」を復習することで,なんとかできそうですね。  ここから先はみなさんの課題としましょう。そういう数のことを,「完全数」といいま すが,完全数は「1」の次が「6」ですが,その他に何があるでしょう。 +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ |       (3) ピタゴラス数(x2 +y2 =z2 となるような数)      | +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+  次のプログラムを修正しましょう。 FOR i = 1 TO 10        ( 10解調べる。i はカウンタ)    INPUT x,y,z ( 3,4,5 という形で 3つの数を一度に入力する) IF x * x + y * y = z * z THEN PRINT x,y,z  NEXT  そして, 「真の意味でのピタゴラス数を10組程度は見つけましょう。 レポート(5/28 の班)                 学籍番号  5/28の夕方までに,  自然科学棟 1F 数学事務室隣のレポート入れに提出  氏名 (1) 完全数を求めるプログラムとその結果                                                                                   (2) ピタゴラス数を求めるプログラムとその結果 (10 組以上) (3) 次のいずれかを「裏」にすること。  A. Σ(1/k) について分かること B. Σ(1/k2 ) はどのような値になるか。分かること。 C. なるべく大きな素数 D. 素数の分布について分かること E. 次の分数の「真の答え」( 自信のある人はこれやってね。) 1/7, 1/17, 1/19, 1/29, 1/59, 1/109 , 1/1999