3 votos

¿Cómo factorizar un montón de números "pequeños"?

Existen varios algoritmos rápidos para factorizar números grandes, pero ¿cuál es el mejor algoritmo para factorizar un montón de "pequeños" números? Necesito factorizar un montón de números Impares $< \mathbf{2^{56}}$ . Quiero hacerlo sólo con 64 bits aritmética.

Yo uso una combinación de eso:

  • Una tabla de todos los primos $< 2^{16}$ .
  • Una "técnica de compensación" para iterar sobre posibles números primos mayores que $2^{16}$ .
  • Le site Rho de Pollard heurística para (probablemente) encontrar un divisor. He implementado la versión presentada en "Introducción a los algoritmos" (Cormen, Leiserson, Rivest y Stein), con la adición de un número máximo de iteraciones algo así como $n^{1/2}$ o $n^{1/4}$ .

De hecho, quiero calcular el suma de divisores Impares $\sigma_{\text{odd}}$ de estos números. Para comprobar que $\forall n \in \mathbb{N}, n > 1, \exists k : \sigma_{\text{odd}}^k(n) < n$ . ¿Quizá haya una forma mejor de hacerlo que utilizar la factorización completa en números primos?

¿Y qué pasa con todas estas consideraciones en un en paralelo ¿contexto?

Respuesta : Por último, utilizo una gran tabla única con todos los números primos $<2^{32}$ :

1voto

Gevorg Hmayakyan Puntos 172

Para calcular la suma de divisores de un número definido se puede utilizar la aplicación del teorema del número pentagonal de Euler para la suma de divisores $\sigma(n)$ .

$$\sigma(n)=\sigma(n-1)+\sigma(n-2)-\sigma(n-5)-\sigma(n-7)+...$$ El ${1,2},{5,7},...$ son números pentagonales generalizados.

$\sigma(n)=0$ si $n<0$

$\sigma(n-n) = 0$ si $n$ no es un número pentagonal generalizado y $\sigma(n-n) = n$ de lo contrario.

Se pueden encontrar los números pentagonales generalizados:

https://oeis.org/A001318

Hay otros artículos:

http://euler.genepeer.com/eulers-pentagonal-number-theorem/ http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.538.6485&rep=rep1&type=pdf

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X