「Python実行例 素数に関する計算」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「実行例を示します。 <pre> # 必要なモジュール、クラス、関数の読み込み import matplotlib.pyplot as plt import math # 素数に印をつける(…」) |
|||
| (同じ利用者による、間の1版が非表示) | |||
| 2行目: | 2行目: | ||
<pre> | <pre> | ||
| − | # 必要なモジュール、クラス、関数の読み込み | + | # 必要なモジュール、クラス、関数の読み込み(下の2行は場合によってはなくてもよい) |
import matplotlib.pyplot as plt | import matplotlib.pyplot as plt | ||
import math | 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, n): | |
| − | + | if prime[i]: | |
| − | + | for j in range(2*i, n+1, i): | |
| − | + | prime[j] = False | |
| − | |||
# 素数を列挙する | # 素数を列挙する | ||
2023年6月22日 (木) 16:29時点における最新版
実行例を示します。
# 必要なモジュール、クラス、関数の読み込み(下の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)
この他にも色々試して、追加してください。