Nos gustaría que factorizar un semiprimo . El objetivo de este reto es encontrar dos enteros pequeños y tal que puede ser trivialmente factorized con el método de Fermat, lo que permite deducir fácilmente los factores de .u v u v N N
La tarea
Dado un semiprime y un entero positivo , definimos e como:k x y
y=x2-kN
Paso # 1 - Encuentra
Primero debe encontrar el valor más pequeño posible de modo que sea un número cuadrado ( también conocido como cuadrado perfecto).y
Esto permite factorizar con una sola iteración del método de factorización de Fermat . Más concretamente, esto lleva inmediatamente a:
(Actualización: esta secuencia ahora se publica como A316780 )
Paso # 2 - Factoriza
Luego debe encontrar los dos enteros positivos y manera que:v
c u = x + √
donde y son los factores primos de .d N
Resumen
Su tarea es escribir un programa o función que tome como entrada e imprima o salga y en cualquier orden y en cualquier formato razonable.u v
Ejemplo
Consideremos
Paso 1
El valor más pequeño posible de es , lo que da:40
y=28232-40×199163=7969329-7966520=2809=532kN=(2823+53)×(2823-53)kN=2876×2770
Paso 2
La factorización correcta de es , porque:k = 4 × 10
k N = ( 719 × 4 ) × ( 277 × 10 ) N = 719 × 277
Reglas
- La entrada está garantizada como semiprime.
- Este es el código de golf, por lo que gana la respuesta más corta en bytes.
- Las lagunas estándar están prohibidas.
Casos de prueba
N | k | Output
-----------+------+------------
143 | 1 | [ 1, 1 ]
2519 | 19 | [ 1, 19 ]
199163 | 40 | [ 4, 10 ]
660713 | 1 | [ 1, 1 ]
4690243 | 45 | [ 9, 5 ]
11755703 | 80 | [ 40, 2 ]
35021027 | 287 | [ 7, 41 ]
75450611 | 429 | [ 143, 3 ]
806373439 | 176 | [ 8, 22 ]
1355814601 | 561 | [ 17, 33 ]
3626291857 | 77 | [ 7, 11 ]
6149223463 | 255 | [ 17, 15 ]
6330897721 | 3256 | [ 74, 44 ]
Implementación de ejemplo
N
será de hecho un semiprime?