数論#
数論(number theory) (整数論 とも)は、数について研究する分野。
代数学に限らず、解析学・幾何学にも関わりがあるため、
代数的整数論
解析的整数論
数論幾何学
といった分野がある
代数的整数論#
「代数的整数」を研究する分野。(代数的に整数論を扱うわけではない)
定義(代数的整数)
最高次の係数が
の解となる複素数を、 代数的整数 という
は の解 → 代数的整数 は1次方程式 の解 → 代数的整数
ガウス整数#
整数
の解になっている → 代数的整数である
このような複素数を ガウス整数 と呼ぶ。整数はすべて
解析的整数論#
解析的整数論は、複素解析やフーリエ解析などの解析的な手法で整数論を研究する分野。(「解析的整数」があるわけではない)
素数定理#
素数定理
正の実数
である。
実際、非常にゆっくりであるが1に収束していっていることがわかる
def pi(n: int) -> int:
"""エラトステネスの篩をもとに、n以下の素数の個数を数える"""
# 1. 長さn+1の配列を用意し、0番目と1番目の要素にFalseを、2番目以降すべてにTrueを入れる(0,1は素数でないため)
is_primes = [True] * (n + 1)
is_primes[0] = is_primes[1] = False
# 2. 2からsqrt(n)までの数について、その数が素数なら、その倍数はFalse(素数でない)とする
for i in range(2, int(n**0.5) + 1):
if is_primes[i]:
for j in range(i * i, n + 1, i):
is_primes[j] = False
return sum(is_primes)
import numpy as np
results = []
for k in range(1, 7):
n = 10 ** k
n_prime = pi(n)
x = n/np.log(n)
results.append({"n": n, "π(x)": n_prime, "x/log(x)": round(x, 1), "π(x)/{x/log(x)}": round(n_prime/x, 3)})
import pandas as pd
pd.DataFrame(results)
n | π(x) | x/log(x) | π(x)/{x/log(x)} | |
---|---|---|---|---|
0 | 10 | 4 | 4.3 | 0.921 |
1 | 100 | 25 | 21.7 | 1.151 |
2 | 1000 | 168 | 144.8 | 1.161 |
3 | 10000 | 1229 | 1085.7 | 1.132 |
4 | 100000 | 9592 | 8685.9 | 1.104 |
5 | 1000000 | 78498 | 72382.4 | 1.084 |
ゼータ関数#
ゼータ関数
実部が 1 より大きい複素数
で表される関数のことをいう。
例:
偶数の
という形だった。これはリーマン予想という難問であり、現在も未解決のまま残っている。
リーマン予想
ゼータ関数
数論幾何学#
代数幾何学を用いて整数論を研究する分野。
フェルマーの最終定理#
有名な難問。
フェルマーが17世紀に本のページの隅に命題だけ残したもの。1995年にワイルズが証明。