コンピュータ基礎および演習II

演習問題

解答は

に提出しなさい。ソースファイル (〜.java) のみを提出してください。 提出は gFTP 等の ftp ソフトを用いて行ってください。

- 繰り返し

いずれの問題も while 文を使った繰り返しのプログラムとして書きなさい。

問題1

int 型変数を用意し適当な値を代入しておく。 その整数の階乗 n! を求めるプログラムを書きなさい。 ファイル名は Factorial.java とする。

n! = 1 × 2 × 3 × … × n

である。例題の 1 つめのプログラムと同じ考え方で書けるはずである。

n ≧ 14 になると正しい値が求まらなくなるが、 これは int 型整数の扱える範囲を越えるためである。 今回はこれで仕方ないとする。

問題2

1 ≦ n ≦ 10 の整数 n について、 n, 2n, 3n を一覧表の形で出力するプログラムを書きなさい。 ファイル名は Power2N3N.java とする。

出力の最初の数行は次のようになる。

1: 2 3
2: 4 9
3: 8 27
4: 16 81

問題3

1 から100までの範囲にある素数をすべて表示するプログラムを書きなさい。 ファイル名は Prime100.java とする。

このプログラムは例題の 2 つ目のプログラムを改造し、 素数を判定する while 文の外側に、 2, 3, 4, …, 100 の順に判定対象となる数を登場させる while 文を書き、二重の繰り返しとすればよい。

なお、このプログラムの作り方だと 2 は素数であるが表示されない。 今回はこのままでも良いとするが、 余力のある人は 2 もきちんと表示されるようにしてほしい。

なお、「絵本」p.55 に同種のサンプルプログラムがある。 このサンプルの方法のような配列を用いずに、 while 文のみを使う方法を考えること。

問題4

10000 以下の完全数をすべて求めて表示するプログラムを書きなさい。 ファイル名は Perfect.java とする。

完全数とは、 その数の約数 (その数自身は含まない) の和が、 その数自身と等しい自然数である。 例えば、 6 は約数の和が 1 + 2 + 3 = 6 なので完全数である。

このプログラムは、二重の while 文として書くのが適当である。

なお、このプログラムの実行には数秒要する。