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爆速講座
