名称未設

【ExcelVBA公開模試】フロベニウス硬貨交換問題(その1補題)

文法を無視して、とりあえず動けばいいという邪道ExcelVBA講座こと「速読VBA単語」に準拠した問題を出題します。

問題

図1でセルB1、B2に2以上の整数値を入力する。セルB1の値を「A」、セルB2の値を「B」とする。ExcelVBAを用いて、次の各設問の処理を実行しなさい。

(1)ABが互いに素(最大公約数が1)でなければ、「最大公約数が1ではない!」と表示しなさい。

(2)図2のようにセルA5以降にBA列の表を出力したい。次のコードを完成させなさい。ただし、ABが互いに素の場合は「最大公約数が1ではない!」と表示して終了する。

Sub kakko2()
   a = Range("B1")
   b = Range("B2")


   For i = 1 To a
       For j = 1 To b


       Next
   Next
End Sub

<図1>

<図2:設問(2)完成イメージ>

わえなび式 正解例

(このページの下にあります)

目標回答時間

プロ5分以内、アマチュア10分以内に処理ができたら合格

この問題の出題範囲

「速読VBA単語」Program3-9まで

ご案内

ExcelVBAをなんとなく理解できればいいという初心者のための「速読VBA単語」を受講希望の方はカリキュラムをご覧ください。

正解例

(1)aとbが、2~aのいずれかの整数で割り切れたら最大公約数が1ではないということです。

Sub kakko1()
   a = Range("B1")
   b = Range("B2")
   For i = 2 To a
       If i > b Then Exit For
       If a Mod i = 0 And b Mod i = 0 Then
           Debug.Print "最大公約数が1ではない!"
           Exit Sub
       End If
   Next
End Sub

(2)iとj(行と列)が逆になっているのはフロベニウス硬貨交換問題(本題)を解くためです。

Sub kakko2()
   a = Range("B1")
   b = Range("B2")
   For i = 2 To a
       If i > b Then Exit For
       If a Mod i = 0 And b Mod i = 0 Then
           Debug.Print "最大公約数が1ではない!"
           Exit Sub
       End If
   Next
   For i = 1 To a
       For j = 1 To b
           c = (j - 1) * a + i
           Cells(j + 4, i) = c
       Next
   Next
End Sub

バックナンバー


この記事が気に入ったらサポートをしてみませんか?