Java:while文の課題(演習問題) [勉強]
週の真ん中水曜日、真ん中もっこりっ! 夕焼けニャンニャーーンッッ!!
さて、今日(08/11)もJavaりますかねぇ。
while文の章で用意されていた演習問題にチャレンジです。
もう最小公倍数のヤツはやっつけたから、それ以外のをUPしますね。
問題7-1:
「2のn乗>100,000を満たす一番小さなnを求めるプログラムを書け」
問題7-2:
「1+2+3+4・・・と足していき、総和が1万を超えたら、そのときの総和と最後に足した数を出力するプログラムを書け」
今回は、この2問です。
以下、問題7-1の回答ソース。
public class OverPointNumber {
public static void main(String args[]) {
int n = 0;
int kake = 1;
int mini = 100000;
while (n < 100000) {
n++;
kake = 2 * kake; //2のn乗を計算
if (n <= mini) {
mini = n; //一番小さいnを変数miniに記録
}
if (kake >= 100000) {
break;
}
System.out.println("2の" + n + "乗 = " + kake);
}
System.out.println("2のn乗>100,000を満たす、一番小さなnは " + mini);
}
もっとスッキリしたソースがあるハズですが・・・・・・私の頭でできあがったアルゴリズムはこんなもんです。(^-^;
で、次は問題7-2の回答ソースです。
public class OverPointNumber2 {
public static void main(String args[]) {
int n = 1;
int wa = 0; //総和用の変数宣言
while (n < 10000) {
wa = wa + n + (n + 1); //総和+n+(n+1)で、足し続けていく
n = n + 2;
if (wa > 10000) { //総和が10,000を超えたらループを抜ける
break;
}
}
System.out.println("総和 = " + wa);
System.out.println("最後に足した数 = " + (n - 1));
}
}
これも、もっとスマートなソースがあるハズですが・・・(^-^;
n=0でもよかったのかなぁ・・・。
次は、メソッドかなぁ。あ、既にUPした回文判定ソースも、メソッド使ってたな。
ま、いいや。順番バラバラだけど・・・次はメソッド関連の問題にチャレンジです。
問1問目間違ってんじゃねーか
by 名無しの時計 (2020-10-05 16:50)