Python3の整数int型は最大値なし!上限がない理由とメモリ制限を解説

 

Python3の整数型int に最大値はない

Python3の整数型(int)には、他のプログラミング言語のような固定的な最大値が存在しません。これはPython3の大きな特徴の一つです。

# 非常に大きな整数も扱える
big_number = 10**100
print(big_number)
# 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

# さらに大きな数でも問題なし
huge_number = 2**1000
print(len(str(huge_number)))  # 302桁

なぜPython3の整数に上限がないのか

Python3では、整数型が動的に拡張される仕組みを採用しています。メモリが許す限り、任意の桁数の整数を扱うことができます。

Python2との違い

# Python2では int と long が分かれていた
# Python3では統合され、全て int として扱われる

# Python3では自動的に拡張される
result = 999999999999999999999 * 999999999999999999999
print(type(result))  # <class 'int'>

実際の制限はメモリ容量

整数の上限は実質的にシステムのメモリ容量によって決まります。

import sys

# システムの再帰制限を確認
print(sys.getrecursionlimit())

# 非常に大きな計算も可能
factorial_100 = 1
for i in range(1, 101):
    factorial_100 *= i
    
print(f"100! は {len(str(factorial_100))} 桁")
# 100! は 158 桁

他の言語との比較

C言語やJavaとの違い

# Python: 上限なし
python_int = 2**64
print(python_int)  # 問題なく表示

# C言語の long long (64bit) なら
# 最大値: 9223372036854775807 (2^63-1)

# Pythonなら桁数を気にせず計算可能
big_calc = 2**100 + 2**200
print(f"計算結果は {len(str(big_calc))} 桁")

大きな整数を扱う際の注意点

パフォーマンスへの影響

import time

# 小さな整数の計算
start = time.time()
small_calc = 1000**100
small_time = time.time() - start

# 非常に大きな整数の計算
start = time.time()
big_calc = 1000**10000
big_time = time.time() - start

print(f"小さな計算: {small_time:.6f}秒")
print(f"大きな計算: {big_time:.6f}秒")

メモリ使用量の確認

import sys

numbers = [10**i for i in range(10, 100, 10)]
for num in numbers:
    size = sys.getsizeof(num)
    digits = len(str(num))
    print(f"{digits}桁: {size} bytes")

実用的な活用例

暗号化や数学計算での利用

# RSA暗号などで使用される大きな素数
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

# 大きな素数を探す
large_prime = 2**127 - 1  # メルセンヌ素数
print(f"2^127-1 = {large_prime}")
print(f"素数かどうか: {is_prime(large_prime)}")

まとめ

Python3の整数型intには理論上の最大値がなく、メモリが許す限り任意の大きさの整数を扱えます。これにより、科学計算や暗号化処理など、大きな数値を必要とする分野でPythonが重宝される理由の一つとなっています。ただし、非常に大きな整数を扱う際は、計算時間とメモリ使用量に注意が必要です。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座