- 約数探索2
本日の例題で約数をすべて表示するプログラムを紹介しましたが,今度は約数の個数も表示するように変更しましょう.
156: 1 2 3 4 6 12 13 26 39 52 78 156 -- 12
157: 1 157 -- 2
158: 1 2 79 158 -- 4
159: 1 3 53 159 -- 4
160: 1 2 4 5 8 10 16 20 32 40 80 160 -- 12
161: 1 7 23 161 -- 4
162: 1 2 3 6 9 18 27 54 81 162 -- 10
163: 1 163 -- 2
164: 1 2 4 41 82 164 -- 6
165: 1 3 5 11 15 33 55 165 -- 8
166: 1 2 83 166 -- 4
167: 1 167 -- 2
168: 1 2 3 4 6 7 8 12 14 21 24 28 42 56 84 168 -- 16
169: 1 13 169 -- 3
170: 1 2 5 10 17 34 85 170 -- 8
171: 1 3 9 19 57 171 -- 6
172: 1 2 4 43 86 172 -- 6
173: 1 173 -- 2
174: 1 2 3 6 29 58 87 174 -- 8
175: 1 5 7 25 35 175 -- 6
176: 1 2 4 8 11 16 22 44 88 176 -- 10
177: 1 3 59 177 -- 4
178: 1 2 89 178 -- 4
179: 1 179 -- 2
|
手順
内側の for 文の前にカウンタ変数を定義する
内側の for 文の中で約数が見つかるたびにカウンタ変数を 1 増やす
内側の for 文を抜けるときにカウンタ変数の値を表示させる
|
解答例
- 素数探索
1000 以下の素数をすべて表示するプログラムを作成しましょう.
Prime numbers below 1000
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 ・・・ 以降 略
|
約数の個数から判断する方法と,約数が見つかるとすぐに次の処理に移って時短を行う方法とがあります.
解答例1
解答例2
- 完全数探索
自分自身を除く約数の和が自分自身に一致する数を「完全数」と言います.例えば,6 は約数として 1, 2, 3, 6 を持ちますが,自分自身以外の約数の和は 1 + 2 + 3 = 6 となり完全数です.4桁までの完全数を全て見つけるプログラムを作成しましょう.
Perfect numbers below 10000: 6 28 ・・・ 以降 略
|
手順
内側の for 文の前に約数の和を入れる変数を定義する
内側の for 文で約数が見つかるたびに変数に加算する
内側の for 文を抜けたときに,約数の和が自分自身に一致する場合にその数を表示する
|
解答例
- カウンタ
アルファベットの小文字を30回ランダムに表示させることを10回行いますが,その際に各回の先頭で出た文字がその回で何回出てきたかも数えることを行うプログラムを作成しましょう.
jrpxxaqvqksevjdtmvkbsesrtbknlb -- j:2
qvaqphzwaqxjhvuqgkphzkrpygczmc -- q:4
tjcmyanmtkzgbdvjfrikontkruiump -- t:3
oburgegxqmlajsicmunjvekvwaasps -- o:1
fjlzvxiyqlmngillbonkxfybbcpmtt -- f:2
spobfpxvvnjkoffdojuzcgyqgzylof -- s:1
abysbkbohfvcfhsbcydwqdgofyiwlm -- a:1
bdenyxxqvqergybapvjeeugxstpxvq -- b:2
rgqphtuabwjnygajhadkofbbhwouwv -- r:1
tyzxdnpyhuyiwtcqbatdkourdakcqi -- t:3
|
手順
内側の for 文の前にカウンタ変数を定義する
内側の for 文のインデックスが 0 だったらその文字を覚えておく
文字が一致したらカウンタの値を 1 増やす
内側の for 文を抜けるときに,文字とカウンタの値を表示させる
|
解答例
- 表計算風の処理
10 人の学生さんの英語,数学,物理の各科目のテストの得点を乱数を用いて 1 から 100 の整数で用意し,各学生の平均点,全体の平均点と平均点の最高点,最低点を以下のように表示するプログラムを作成しましょう.
No Eng Math Phys | Total
1 26 28 50 | 34.7
2 71 58 41 | 56.7
3 3 20 79 | 34.0
4 76 79 62 | 72.3
5 8 14 2 | 8.0
6 90 94 72 | 85.3
7 73 90 8 | 57.0
8 69 57 50 | 58.7
9 17 88 92 | 65.7
10 72 34 84 | 63.3
----------------------------
53.6
Best mean score: 85.3
Worst mean score: 8.0
|
手順
外側の for 文の前に最大値,最小値,そして全員の合計の和を入れる変数を定義する
内側の for 文の前に学生ごとの合計を入れる変数を定義する
内側の for 文の中で合計を加算していく
内側の for 文を抜けるときに合計から平均値を得起算して表示させる
内側の for 文を抜けた後で,最大値と最小値の更新処理を行う
外側の for 文を抜けるときに,ハイフン行や全体の平均値の出力を行う
外側の for 文を抜けた後で,最大値と最小値を表示させる
|
解答例