Chainerのチュートリアルにて
Chainerの公式サイトのチュートリアルにてつらつらと読み進めていたら演習問題でこんな問題にぶち当たった。
2以上の整数 p が素数であるとは、「どんな 2 以上 p-1 以下の整数 k に対しても p は k で割り切れない」が成り立つことを指します。素数を小さい順から列挙すると、2, 3, 5, 7, 11, 13, 17, … となります。 チュートリアルで学んだ制御構文である if や for を用いて、2 から 100 からまでに含まれる素数を列挙して下さい。
何を言ってんだ?
と初心者ながらに思ったわけです。
答え
primes.py
num = [2] #2から始める
p = 100 #対象の数
for array1 in range(3, p, 2): #2以外の素数は奇数でしか存在しないので2飛ばしでいく
for array2 in num: #array1にまず3が入り、そして3未満の数字2で割ろうとする
if array1 % array2 == 0: #あまりが0になったら割り切れてしまった証拠
break
else: #もし余りが出た場合は素数列numへappend(追加)してあげる
num.append(array1)
print(num)
恥ずかしながらこれを解決するのに数時間かかった。
もっと励まないといかんと思いました。
正直、
高校時代に理系ではあったがこんなにもプログラミングで数学にぶち当たるとは思わなかった。
ちゃんと数学の復習をしておこうと反省した。