日商プログラミング検定 STANDARD VBA サンプル問題の第3問を解いてみた
前回に続いて第3問を解いていきます。
その問題を解くのにプログラミング必要なのか疑問だった前回↓
から変わって、今回はプログラミングらしい問題です。
第3問 以下のプログラムの説明で最も適切なものを選択せよ。
コードを読むよりも先に選択肢を読んだ方がいいでしょう。【1】123456が素数かどうかの判定、【2】2の塁乗かどうかの判定【3】素因数分解したときの因数を表示【4】約数を求め表示。一の位を見れば素数でないことはすぐ分かるから【1】はなさそうです。コードを見ると2だけでなく2から352まで割り続けているので【2】もなさそうです。残りは【3】か【4】ですが、約数を求めるなら123456がiで割り切れるかを1回だけ調べればいいですが、While文で繰り返し割り切れるかを調べていることから【4】ではなくて【3】が正しいと分かります。
For文の352までという数字がどこから現れたか一瞬疑問でしたが、√123456=351.3… なので、素因数分解のためにはこれを切り上げて352まで割って調べればいいということです。ただしこれだと一般性に乏しく123456以外の素因数分解をしようとしたらその都度352の部分も変えないといけません。
第3問はこの1問だけです。第2問のように空所補充でプログラムを完成させる問題だけでなく、何をするプログラムなのか読み解く問題も出題されるようです。おそらく仕事で他の人が書いたプログラムを修正するのに必要な能力が問われているのでしょう。
次は実技科目を解きます。