Javaプログラミング基礎 演習問題

解答は

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

while文を用いた繰り返し、高度な繰り返し、多数の場合分け

問題1

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

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

である。 この問題はfor文の回の演習問題と同じ働きをするものである。 今回はwhile文を使って書くこと。

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

問題2

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

この問題はfor文の回の演習問題と同じ働きをするものである。 今回はwhile文を使って書くこと。

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

1: 2^1=2  3^1=3
2: 2^2=4  3^2=9
3: 2^3=8  3^3=27
4: 2^4=16  3^4=81
...

問題3

1 から小さい順に、 5 で割り切れかつ 7 で割り切れる数を 10 個求めて表示し、 さらにその和を計算するプログラムを作成しなさい。 プログラム名は MultiplesOfFiveAndSeven とする。 while文を使って書くこと。

35 70 105 140 175 210 245 280 315 350 がこの条件を満たす数であり、 その和は1925となるはずである。

問題4

次のような文字からなる三角形を描くプログラムを書きなさい。 プログラム名は Triangle とする。

*
**
***
****
*****

このプログラムは 2 重の繰り返しとして書くこと (単に表示できれば良いというわけではない) 。 for文、while文のいずれを使っても良い。 外側の繰り返しで行数を数えながら行毎の繰り返しを 5 回行うこととし、 内側で 1 行目で * を 1 回、 2 行目で * を 2 回、 3 行目で * を 3 回…と出力するような繰り返しを記述すれば良い。

なお、改行をせずに文字を表示するためには System.out.print(表示したい内容); を使うと良い。 また、単に改行だけしたい場合は、 System.out.println(); と書けば良い。 繰り返しの中のどのタイミングで改行をすべきかについても 考えること。

問題5

10000 以下の完全数をすべて求めて表示するプログラムを書きなさい。 プログラム名は Perfect とする。 繰り返しを使って書くこと。 繰り返しはfor文、while文のいずれを使っても良い。

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

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

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