Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
How to handle very large numbers in Python?
Python handles arbitrarily large integers automatically without any special syntax or imports. Unlike languages with fixed integer sizes, Python's integer type can grow as large as your system's memory allows.
Python's Arbitrary Precision Integers
In Python 3, all integers are arbitrary precision by default. Python 2 had separate int and long types, but Python 3 unified them into a single int type that automatically handles very large numbers.
Basic Large Number Operations
You can perform standard arithmetic operations on numbers of any size −
# Working with very large integers
a = 182841384165841685416854134135
b = 135481653441354138548413384135
print("Subtraction:", a - b)
print("Addition:", a + b)
print("Multiplication:", a * b)
Subtraction: 47359730724487546868440750000 Addition: 318323037607195823965267518270 Multiplication: 24773394542804569667563578135900497701994628348225
Factorial Example
Large numbers are commonly encountered when calculating factorials −
import math
# Calculate factorial of 50 (very large number)
result = math.factorial(50)
print("50! =", result)
print("Number of digits:", len(str(result)))
50! = 30414093201713378043612608166064768844377641568960512000000000000 Number of digits: 65
Power Operations
Python efficiently handles exponentiation with large bases and exponents −
# Large power operations
base = 123456789
exponent = 10
result = base ** exponent
print("123456789^10 =", result)
# Even larger operations
large_result = 2 ** 1000
print("2^1000 has", len(str(large_result)), "digits")
print("First 50 digits:", str(large_result)[:50])
123456789^10 = 827240261886336764177 2^1000 has 302 digits First 50 digits: 10715086071862673209484250490600018105614048117055
Performance Considerations
While Python handles large integers automatically, operations become slower as numbers grow. For extremely large numbers, consider specialized libraries like gmpy2 for better performance.
import time
# Timing large number operations
start = time.time()
result = 999999999999999999 ** 100
end = time.time()
print("Operation completed in {:.4f} seconds".format(end - start))
print("Result has {} digits".format(len(str(result))))
Operation completed in 0.0156 seconds Result has 1801 digits
Conclusion
Python's built-in integer type automatically handles arbitrarily large numbers without special syntax. While convenient for most applications, consider performance implications and specialized libraries for computationally intensive large number operations.
