Факторизация чисел в Python: методы и алгоритмы

Чтобы факторизовать число в Python, вы можете использовать различные методы. Вот несколько часто используемых подходов:

  1. Пробное деление. Этот метод предполагает деление числа на меньшие простые числа, чтобы найти его множители. Подходит для относительно небольших чисел.
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
  1. Алгоритм Ро Полларда: это вероятностный алгоритм, который использует функцию со случайным поведением для поиска факторов. Это хорошо работает для больших чисел.
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
  1. Факторизация простых чисел. Этот метод включает в себя нахождение простых делителей числа с использованием Решета Эратосфена для получения простых чисел.
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. Вы можете выбрать тот, который лучше всего соответствует вашим требованиям.