Python実行例 素数に関する計算

提供: つれづれウィキ
ナビゲーションに移動 検索に移動

実行例を示します。

# 必要なモジュール、クラス、関数の読み込み(下の2行は場合によってはなくてもよい)
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, 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)

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