[VBA] 11 もしくは 19 で割り切れる数

[VB-03] 11 もしくは 19 で割り切れる数

 100 以下の自然数 のうち、11 もしくは 19 で割り切れる数 を列挙して、それらの数字の合計値を表示するプログラムを書いてください。
 

VB-03 のヒント(ループの中に条件分枝)

 ループ処理の中に条件分枝を入れる典型的なアルゴリズムです。If文には「11 で割り切れる」または「19 で割り切れる」という条件式を記述します。
 

VB-03 の解答

[1] 判定する数を k, 総和を s とします。

[2] それぞれの初期値は k = 1, s = 0 に設定しておきます。

[3] k が条件を満たす場合は、その値を表示して s に k を加えます。
  条件を満たさなければ何もしません。

[4] k に 1 を加えます。

[5] [3] と [4] を繰り返し、k が 101 に達したらループを止めます。

[6] 総和 s の値を表示します。
 
VB-03 の解答コード

'11 もしくは 19 で割り切れる数の探索

Sub Divisible()

 Dim k As Long, s As Long

 ' k(判定する数)の初期値
 k = 1

 ' s (総和) の初期値
 s = 0

 ' k が 101 に達するまでループ
 Do While k < 101

  ' 「11 で割り切れる」または「19 で割り切れる」場合
  If (k Mod 11 = 0) Or (k Mod 19 = 0) Then

   ' 条件を満たす数を表示
   Debug.Print k;

   s = s + k

  End If

  k = k + 1

 Loop

 ' 条件を満たす数の総和を表示
 Debug.Print "S = " & s

End Sub

 マクロを実行すると、

 11 19 22 33 38 44 55 57 66 76 77 88 95 99
 S = 780

という結果が表示されます。Debug.Print で k の値を表示させるところでセミコロン「 ; 」を添えていますが、これは数字を横並びに表示させるオプションです。細かいテクニックですが、覚えておくと結構便利です。

スポンサーリンク
スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください