先週のプリントのプログラムを作成する。ただし、プログラムが完了し、実行
が終了している者は、次の問題に進んでも良い。プリントアウトしたソースリ
ストを先週のレポートで提出している者は、今週のレポートは次からで良い。
まだの者は、先週の問題である次のプログラムを作成して、ソースリストをレ
ポートとして提出すること。
- [問1]
- 「for」文を用いて、1〜1000までの合計値を求める。
- [問2]
- 「while」文を用いて、1〜1000までの合計値を求める。
- [問3]
- 「do while」文を用いて、1〜1000までの合計値を求める。
教科書の練習問題のプログラムを作製する。これは、解答が教科書の後にあるので、分ら
ない場合は、それを見ながら、プログラムを作製すること。問題の意味が分らない場合も、
解答を見て、それを考えること。また、入力時間を節約するために、コメント文は書かな
くても良い。
- [問1]
- 教科書p.126のLesson 3-3「10個の値の最大値を求める」
- [問2]
- 教科書p.126のLesson 3-4「任意個のデータの最大値と最小値を求める」
次の問題は少しむずかしいですが、ヒントを参考に頑張って下さい。
- [問1]
- 2〜1000の範囲の全ての素数2を求める。
以下のヒントを与えるので、それを参考にすること。
- 整数変数は、iとjの2個、用意する。
- iが素数か否かを調べる。それを、2〜1000まで変化させる。
- iをjで割り、その余りが0ならば、iは素数ではない。jは、
2〜i-1まで変化3させて、
iが素数か否か調べる。
- iをjで割った余りは、i%jで計算できる。
- ループは2重になる。
- 外側は、iのループで、2〜1000まで範囲である。
- 内側は、jのループで、2〜iまでの範囲である。ただし、iをjで割っ
た余りが0になればループから抜ける(break文)。
- iが素数か否かには、マークを付ける必要がある。たとえば、整数の
primeを用意し、これが1ならば素数、0ならば素数でないとする。
- 外側のループiの始まりでは、prime=1とする。
- 内側のループでiをjで割ったとき余りが0ならば、prime=0とし
て、break文をもちいて、ループから脱出する。
- 外側のループの終には、prime=1ならば、iをディスプレイに書き出
す命令を書く。
このような、primeのようなマークをフラグ4と言う。
ここまで、終了した者は、以下を考えること。ただし、これは、レポートの範囲外。
- 素数を求める範囲を、2000, 3000, 400, と増加させると計算時間はどう
なるだろうか?。調べよ。
- コンピューターの計算回数は、どの程度であるか?。調べよ。
- 割る整数jの範囲を、狭めることができる。どうすれば良いか?。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年10月15日