必修課題 課題6-1, 6-2で指示されるプログラムを作成し, そのプログラムと実行結果を提出する.
レポートは,以下で説明する「プログラムリスト」の後に, 実行結果を印刷したものを重ねてホッチキスで綴じ,提出する.
以下は,ある8つの都道府県における,現在の人口と10年前の人口である(単位は百万人).
都道府県 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
現在の人口 | 5.628 | 2.360 | 12.577 | 7.255 | 8.817 | 2.877 | 1.468 | 5.050 |
10年前の人口 | 5.382 | 2.334 | 13.515 | 7.483 | 8.839 | 2.844 | 1.385 | 5.102 |
配列を用いて,以下の質問に答えるようなプログラムを作成せよ.
ただし,上に示したデータだけでなく,
計算機で表すことができる値ならどのような値(非常に大きい値や小さい値)
であっても正しい解答ができる,汎用性のあるプログラムとせよ.
また,配列データを破壊しないこと.
なお,複数回答ある場合(現在の人口が最も多い都道府県が,2つある場合等)は,そのうちの1つが回答できれば良い.
以下のアルゴリズムに従い,入力したデータを,大きさの順に
配列の中身を並び替えるプログラムを作成せよ.
なお,以下の例では 配列の要素数を5とし,5つのデータの並び替えを行って
いるが, 要素数をマクロ定義することで,
データ数が変わってもマクロ定義を変えるだけで対応できるようにすること.
素数を小さいものから順に1000個求めて配列に格納し,出力するプログラムを作成せよ.
ただし,ある整数が素数かどうか判定するにあたって,
割り算の回数がなるべく少なくなるように工夫せよ.
なお,求める素数の個数はマクロ定義することで,
より多く(あるいは少なく)素数を求めたい場合でもマクロ定義を変えるだけで
対応できるようにすること.
また,求める素数の個数はとても大きくなりうる.例えば「10000以下の正の整数に
ついて素数かどうか調べる」ような,汎用性に問題が生じるような条件を設けないこと.
ある正の整数nが素数であるか判定するには,1から√nまでの素数で割り切れるか
どうか確かめればよい.
例えば99が素数であるか判定するには,1から9(√99 = 9.9...)までの
素数である2, 3, 5, 7で割り切れるかどうか確かめればよい(小さいものから
順に素数をもれなく求めれば,nが素数であるか判定する時には,nより小さい
素数はすべて配列に格納されている).しかも,3で割り切れた時点で99は素数
ではないことがわかるので,5, 7で割り切れるかどうかは試さなくてもよい.