- while 文の基本1
2桁の正の整数を乱数により10個発生させて表示するプログラムを作成しましょう.
19 17 41 70 48 36 75 49 20 80
|
ヒント
while 文の骨格は以下のように基本的なもの
i = 1
while i <= 10:
hoge
i += 1
|
解答例
- while 文の基本2
2桁の正の整数を乱数により1つ発生させ,その数以下の正の奇数を順に表示するプログラムを作成しましょう.
|
Odd numbers less than or equal to 56: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55
|
解答例
- 乱数の和
1桁の正の整数を乱数により発生させることを,それらの数の和が 100 を超えるまで続けるプログラムを作成しましょう.
7 1 7 1 2 1 7 1 6 6 9 1 7 2 1 2 5 1 5 8 1 5 5 1 6 8
Sum of above numbers: 106
|
ヒント
和を入れる変数を用意し,その初期値を0にしておく
while ループはその和が100以下の間は実行する設定
和に乱数を加算するときは類算代入演算子の += を使用
|
解答例
- 引き算
1から20の範囲の整数を乱数により発生させ,100からその数を引いていく作業を繰り返し行います.以下のように最後ちょうど0になるまで,作業を続けるプログラムを作成しましょう.
100 - 2 = 98
98 - 7 = 91
91 - 8 = 83
83 - 14 = 69
69 - 7 = 62
62 - 7 = 55
55 - 17 = 38
38 - 18 = 20
20 - 5 = 15
15 - 14 = 1
1 - 3 = -2 NG
1 - 9 = -8 NG
1 - 18 = -17 NG
1 - 13 = -12 NG
1 - 9 = -8 NG
1 - 12 = -11 NG
1 - 1 = 0
|
ヒント
前問と同様に差を入れる変数を用意するが,その初期値は100
while ループの中で -= を使用して差がどんどん小さくなるようにする
引き算の式を表示した後,改行しないでおいて if 文で差が負になった時の処理を用意する
|
解答例
- カウンタ
1から5の整数のどれか一つを乱数により発生させることを続け,同じ数が4回続くと終了するプログラムを作成しましょう.
|
3 3 1 3 1 2 1 5 4 5 4 5 5 1 1 5 1 3 4 2 3 3 1 5 5 3 2 3 4 4 5 4 1 1 4 3 3 4 4 3 1 2 3 3 4 1 4 5 2 2 5 3 2 4 4 3 1 1 1 3 2 3 5 2 2 4 2 3 2 1 3 4 2 5 4 2 5 2 5 1 2 3 4 4 5 1 4 5 3 5 1 4 5 5 2 3 5 4 3 5 2 1 1 2 2 3 4 1 4 4 1 3 4 3 5 4 3 2 2 1 3 3 5 4 4 2 2 5 5 3 3 5 1 1 4 3 5 5 5 1 5 5 3 3 5 4 3 3 1 5 1 5 3 3 2 5 5 4 2 3 5 4 2 2 1 4 4 5 3 1 4 1 1 5 1 4 1 4 4 1 1 1 1
|
ヒント
何回同じ数が続いたかを覚えておく変数を用意し,その値が4になったらループを抜ける
一つ前の数字を覚えておく変数も必要
違う数が出たらカウンタをリセットする
|
解答例
- 素因数分解
この授業の第1回で紹介した素因数分解の方法を実際に実現するプログラムを作成しましょう.3桁の正の整数を乱数により1つ発生させ,その数の素因数分解を行うプログラムを作成しましょう.
Decomposition of 548 into prime numbers: 2 2 137
|
解答例
- コラッツ予想
3桁の正の整数を1つ乱数を用いて発生させます.その数が偶数であれば2で割り,奇数であれば3倍して1を足す,という作業を繰り返し行い,数が1になるまで繰り返すプログラムを作成しましょう.
|
638 319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822 911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 1732 866 433 1300 650 325 976 488 244 122 61 184 92 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
|
解答例
どんな数でもこの操作で必ず1になるというのはコラッツ予想といいますが,まだ本当にそうなのかが証明されていません.証明できたら賞金1億2千万円がもらえます.