Python 7行 素数列挙
“Python 素数列挙”と検索にかけるといろんな人が素数列挙をしていますが、どれだけ短くできるのか気になったのでやってみました。
プログラム
7行まで縮めることができました。
PN_short.py
pn=[2];A=1000
for L in range(3,A):
chk=True
for L2 in pn:
if L%L2 == 0:chk=False
if chk:pn.append(L)
print(pn)
行数:7
変数の数:5(ループ変数含)
関数の数:6
Aの値はどこまで素数列挙するか指定する変数です。
ネットで素数判定を引っ張ってきてA=10000まで調べましたが全て素数でした。
7行目はprintで表示しているだけなので実質6行です。
解説
1行目:pn=[2];A=1000
pnはprimenumberの略です。
最初に素数である2をリストに入れます。
Aはどこまで素数列挙するか指定する変数ですので自由に変えてください。
2行目:for L in range(3,A):
3~Aまでループして素数かどうか判定します。
3行目:chk=True
素数かどうかチェックする変数です。
4行目:for L2 in pn:
素数を抽出した分だけループします。
L2には抽出した素数が入ります。
5行目:if L%L2 == 0:chk=False
素数で割れたらchkをFalseにします。
6行目:if chk:pn.append(L)
素数判定の変数chkがTrueなら素数なので、pnに追加します。
7行目:print(pn)
pnを表示します。
最後まで見てくれて本当にありがとうございます!
もしかしたら他の人がもっと短く書いているかもしれませんが紹介でした。
追記
昔の私よ、if chk == True:
はif chk:
でいいんだぞ。