Llevo unos 12 meses buscando curvas de Mordell de rango >=8 y he identificado aproximadamente 280.000 curvas en nuestro rango archivable, entre muchos millones que no lo están.
Para esta búsqueda he estado utilizando hasta 60 cpus de 3Ghz+ a la vez. Ahora estoy llegando a un punto en el que el rendimiento disminuye y los requisitos de memoria aumentan considerablemente. Por lo tanto, tengo que ser un poco más inteligente en algunas de las matemáticas.
Mi pregunta es, entonces, cuál se cree (o se sabe) que es el algoritmo de factorización más rápido para enteros positivos < 2^60.
No estoy muy dispuesto a consumir más décadas de GHz de potencia de procesamiento a menos que pueda obtener un rendimiento razonable de la inversión, para lo cual un algoritmo de factorización rápido sin duda ayudaría.
Cualquier idea será más que bienvenida.
EDITAR:
Leyendo las respuestas me doy cuenta de que probablemente debería añadir que quiero mantener la factorización dentro de la aritmética de 64 bits. El algoritmo Pollard Rho era interesante, pero probablemente superaría el límite de 64 bits durante su ejecución.
Otra parte del rompecabezas es que, a partir de las factorizaciones, estoy almacenando las diferencias de pares de divisores para cada número factorizado. Esto puede, potencialmente, dejarme con una matriz de alrededor de 50.000.000 valores que luego, posteriormente, necesita ser ordenada.
He estado utilizando Pari/GP para este proyecto y, hasta ahora, ha ido genial. Mi problema actual es principalmente con el uso de memoria, ya que cada tarea de Pari/GP ocupa más de 8GByte de memoria. Esto está impidiendo que mi máquina de 32 núcleos sea tan eficiente como podría haber sido de otra manera. De ahí mi intención de pasar a la aritmética de 64 bits y al código 'C', con la esperanza de ganar eficiencia tanto en tiempo como en espacio, dando así nueva vida a un proyecto que de otro modo se estancaría.
Actualización:
Gracias a todos los que han respondido con tan buenas sugerencias sobre cómo proceder.
Al final he decidido utilizar la biblioteca flint, como sugirió William Hart, en lugar de intentar reinventar la rueda. La capacidad de flint para trabajar directamente con enteros de 64 bits me da una gran ventaja en cuanto a uso de memoria y velocidad en comparación con mi configuración actual. En particular, ahora puedo ejecutar los 32 núcleos en mi máquina principal y todavía tener memoria de sobra, potencialmente dando una mejora de 8 veces en el rendimiento de procesamiento.
Kevin.