「Python実行例 素数に関する計算」の版間の差分

提供: つれづれウィキ
ナビゲーションに移動 検索に移動
(ページの作成:「実行例を示します。 <pre> # 必要なモジュール、クラス、関数の読み込み import matplotlib.pyplot as plt import math # 素数に印をつける(…」)
 
10行目: 10行目:
 
prime = [True for i in range(n+1)]
 
prime = [True for i in range(n+1)]
 
prime[1] = prime[0] = False
 
prime[1] = prime[0] = False
for i in range(2, math.ceil(math.sqrt(n)):
+
for i in range(2, math.ceil(math.sqrt(n))):
 
# for i in range(2, n):
 
# for i in range(2, n):
 
         if prime[i]:
 
         if prime[i]:

2022年11月24日 (木) 15:10時点における版

実行例を示します。

# 必要なモジュール、クラス、関数の読み込み
import matplotlib.pyplot as plt
import math

# 素数に印をつける(エラトステネスの篩)
n = 100
prime = [True for i in range(n+1)]
prime[1] = prime[0] = False
for i in range(2, math.ceil(math.sqrt(n))):
# for i in range(2, n):
        if prime[i]:
            for j in range(2*i, n+1, i):
                prime[j] = False

# 素数を列挙する
for p in range(n+1):
    if prime[p]:
        print(p, end=' ')

# n = 10000 としてエラトステネスの篩をやり直す

# 素数を列挙する(整形版)
column = 0
for p in range(n+1):
    if prime[p]:
        column += 1
        if column % 10 == 0:
            print(f'{p:6}')
        else:
            print(f'{p:6}', end='')

# 双子素数を列挙する
twin_primes = []
for p in range(n+1):
    if prime[p]:
        if prime[p+2]:
            twin_primes.append([p, p+2])

print(twin_primes)

# 三つ子素数を列挙する
prime_triplets = []
for p in range(n+1):
    if prime[p]:
        if prime[p+2]:
            if prime[p+6]:
                prime_triplets.append([p, p+2, p+6])
        elif prime[p+4]:
            if prime[p+6]:
                prime_triplets.append([p, p+4, p+6])

print(prime_triplets)

# 浜田の三つ組素数を列挙する
h_prime_trinity = []
for p in range(n+1):
    if prime[p]:
        if prime[p+6]:
            if prime[p+12]:
                h_prime_trinity.append([p, p+6, p+12])

print(h_prime_trinity)

# 100 以下の素数の数
sum(prime[1:101])

# 10000までの素数を求めた後、100ごと、あるいは1000ごとの素数の数を数えてグラフにする
num_prime = []
for i in range(100):
    num_prime.append(sum(prime[i*100:(i+1)*100]))

print(num_prime)

plt.plot(num_prime)

num_prime = []
for i in range(10):
    num_prime.append(sum(prime[i*1000:(i+1)*1000]))

plt.plot(num_prime)

この他にも色々試して、追加してください。