LoginSignup
5
6

More than 3 years have passed since last update.

素数列挙を7行で Python

Last updated at Posted at 2018-10-06

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:でいいんだぞ。

5
6
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6