HOME»基本情報技術者試験掲示板»令和5年[科目B]問1がわかりません
投稿する

令和5年[科目B]問1がわかりません [5140]

 りん子さん(No.1) 
令和5年[科目B]問1について分からないことがあるので教えていただきたいです。

まずこの問題の1つめのfor文は、2からmaxnumまで1ずつ増やしていく、つまり例えばmaxnumを5として考えると、2から5になるまで、2.3.4.5と増やしていくということですよね?

ここまではわかるのですが…。

2つめのfor文は、jを2からiの生の平方根の整数部分まで1ずつ増やすとなってますが、これはどういうことなのでしょうか?

例えばiが2の時はjは2。
iが3の時jは2、3。
iが4の時jは2、3、4。
iが5の時jは2、3、4、5。
が入るということですか?

だとしたら1番最後に入る数値はiと同じ数値なので当然、空欄Bに入る「i÷jの余が0に等しい」に全て当てはまることになり、全てfalseになってしまうので間違いですよね…?

この部分がわかる方教えてください。。
2023.10.18 00:51
ななしさん(No.2) 
正の"平方根"の整数部分なので、
まずは、iについて、ルートを考えましょう。
i = 2の場合は √2 = 1.414…
i = 3の場合は √3 = 1.732…
i = 4の場合は √4 = 2
・・・
といった具合になります。

次にそれらの"整数部分"を考えます。

i = 2, 3 の場合は1なので、ソースコードに書いてある通り、繰り返しは適用しません。
i = 4 以上の場合は、整数部分は2以上の値を取ることがわかると思います。

その値まで、jを2から動かしていく
そういった処理をこのコードでは行なっています。
2023.10.18 01:15
まーぼさん(No.3) 
FE シルバーマイスター
>2つめのfor文は、jを2からiの生の平方根の整数部分まで1ずつ増やすとなってますが、これはどういうことなのでしょうか?

nの平方根とは二乗してnになる数のことです。
例:
1の平方根は±1(±1は二乗して1になる)
9の平方根は±3(±3は二乗して9になる)
2の平方根は±√2(±√2は二乗して2になる)

正の平方根とは平方根の中で正(0より大きい)のものということです。9の正の平方根は+3、2の正の平方根は+√2だけになりますね。そもそもの根号(√のこと)の定義として、正の数nにおいて√nとはnの正の平方根という意味になります。この問題ではiは正の数しか入りませんから、「iの正の平方根」は単純に「iに√を被せた√i」のことだと考えて大丈夫です。

すると
i=2のときのiの正の平方根は√2
i=3のときのiの正の平方根は√3
i=4の時のiの正の平方根は√4(=2)
...
のようになります(続
2023.10.18 01:32
 りん子さん(No.4) 
そういうことだったのですね!
平方根やルートの基本的なことも忘れていて、今ようやく理解できました。ありがとうございます!
2023.10.18 01:50
まーぼさん(No.5) 
FE シルバーマイスター
さてある数の整数部分を求めたいわけですが、これはまず小数に変換すると分かりやすいです。

4の整数部分:4
3.5の整数部分:3
7.2の整数部分:7
1/3の整数部分→1/3は小数にすると0.333…→これの整数部分は0
π(円周率)の整数部分→πは小数にすると3.1492…→これの整数部分は3

ある数の整数部分とは小数で表したときの小数点以下をバサっと切り捨てればいいだけなので簡単です。

√2などの整数部分を求めるにはどうすればいいでしょうか。√2を小数で表せれば簡単なんですが…√2などの具体的な値を求めるのは開平法という少しマイナーな手法を使えば一応は可能です。しかしこの問題ではそこまでは要求されていません。√??の整数部分を求めるのは難しくありません。ある数の整数部分を知りたいときは、2つの隣接する整数でその数を挟みこんでやればいいのです。

例えば  5 < p < 6 のときpの整数部分を求めろと言われたとき、pの具体的な値は分かりませんが、pは小数で表すと必ず5.???のような形で表せられるはずです。5.???のような形で表されるのなら、小数以下をバッサリ切り捨てて整数部分は5と分かります。

√1 < √2 < √4より1<√2<2なので√2の整数部分は1
√1 < √3 < √4より1<√3<2なので√3の整数部分は1
√4は整数にすると2なので、√4の整数部分は2
√4 < √5 < √9より2<√5<3なので√5の整数部分は2

√25 < √30 < √36より5<√30<6なので√30の整数部分は5

√64 < √70 < √81より8<√70<9なので√70の整数部分は8
…など

100以下の平方数(0, 1, 4, 9, 16, 25, 36, 49, 64, 81,100)は覚えておくと便利だと思います。

類似の問題が出ても広く対応できるように考え方を結構細かく書き連ねましたが、今回のようなちょっとした数学の知識が必要な問題は定義に立ち返ることが重要です。平方根の定義ってなんだろう?と調べてみる。それで理解できるのが一番ですが、調べても分からなければどんどん聞いてください。(これはスレ主さんに対してのアドバイスというより、数学の知識が必要な問題を苦手としている人向けのアドバイスです。)
2023.10.18 02:19
 りん子さん(No.6) 
詳しく説明してくださり本当にありがとうございます!平方根は高校生の時に習いましたがもう忘れてしまっていたのですが、読んで思い出すことができました!100以下の平方根、覚えておこうとおもいます。お二方ともありがとうございました。
2023.10.23 23:56
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop