SSブログ

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した回文判定ソースも、メソッド使ってたな。
ま、いいや。順番バラバラだけど・・・次はメソッド関連の問題にチャレンジです。

 

 


nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:資格・学び

nice! 0

コメント 1

名無しの時計

問1問目間違ってんじゃねーか
by 名無しの時計 (2020-10-05 16:50) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。