Чтобы факторизовать число в Python, вы можете использовать различные методы. Вот несколько часто используемых подходов:
- Пробное деление. Этот метод предполагает деление числа на меньшие простые числа, чтобы найти его множители. Подходит для относительно небольших чисел.
def factorize_trial_division(n):
factors = []
i = 2
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
- Алгоритм Ро Полларда: это вероятностный алгоритм, который использует функцию со случайным поведением для поиска факторов. Это хорошо работает для больших чисел.
from math import gcd
def pollard_rho(n):
def f(x):
return (x 2 + 1) % n
factors = []
x = 2
y = 2
while len(factors) == 0:
x = f(x)
y = f(f(y))
factors.append(gcd(abs(x - y), n))
if factors[0] == n:
return pollard_rho(n)
else:
return factors
- Факторизация простых чисел. Этот метод включает в себя нахождение простых делителей числа с использованием Решета Эратосфена для получения простых чисел.
def generate_primes(n):
primes = []
sieve = [True] * (n + 1)
sieve[0] = sieve[1] = False
p = 2
while p * p <= n:
if sieve[p]:
for i in range(p * p, n + 1, p):
sieve[i] = False
p += 1
for p in range(2, n + 1):
if sieve[p]:
primes.append(p)
return primes
def prime_factorization(n):
factors = []
primes = generate_primes(n)
for prime in primes:
while n % prime == 0:
factors.append(prime)
n //= prime
if n == 1:
break
return factors
Это всего лишь несколько примеров из множества методов, доступных для факторизации чисел в Python. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям.