0
0

素数を求める小さいプログラム

Last updated at Posted at 2024-07-12

python3で、108バイトです。code golfトップの45バイトにはかないませんが、善戦したと思います。
エラトステネスの篩を使っています。
python3 prime6.pyとして実行してください。
rangeの第2引数未満最大の素数まで出力します。

prime6.py
def s(n):
 for p in m:
  if n%p==0:return 0 
 return 1
m=[]
for i in range(2,100):
 if s(i):m+=[i];print(i)

煩悩の108バイトプログラム 公太郎

AI

ついでに、Microsoft bing chatのcopilotが出してきた「エラトステネスの篩で、素数を出力する世界最小のコード」を、更に人力で短縮したものを載せておきます。

prime9.py
print([x for x in range(2,101) if all(x%y for y in range(2,x))])

これは64バイトです。

元のコードは、

prime10.py
print([x for x in range(2, 1000) if all(x % y != 0 for y in range(2, int(x**0.5) + 1))])

のような感じで、88bytesでした。

pythonインタプリタは、値を与えるとプリントしてくれるので、以下のような記述でも良いのなら。

[x for x in range(2,100) if all(x%y for y in range(2,x))]

これは、58bytesです。

code golfで、具体的な数字として、1000000までの素数を出力せよというのがありました。

[x for x in range(2,10**6)if all(x%y for y in range(2,x))]

これは、59バイトです。

Code Golf

すごい人がいるなあ。

0
0
3

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
0
0