Diferencia entre revisiones de «Implementación de algoritmos de teoría de números/Algoritmo de factorización en números primos»

Contenido eliminado Contenido añadido
m a wikilibros
m Correcciones menores, (WP:CEM)
Línea 1:
{{a wikilibros}}
Un algoritmo, el masmás obvio, para obtener numerosnúmeros primos, es
 
Sea N el numeronúmero compuesto a factorizar
Sea Ps la lista de numerosnúmeros primos actualmente obtenida
 
Si N = 1, entonces el numeronúmero no es factorizable (es 1).
Si no es 1:
 
Línea 19:
devolvemos Ps
 
Otro, similar pero que consiste en iterar hasta la raizraíz cuadrada de N (*)
 
Si N = 1, entonces el numeronúmero no es factorizable.
si N = 2, o N = 3: agregamos N a Ps, devolvemos Ps
i=2
Línea 35:
devolvemos Ps
 
Otro, que combina ambos, consiste en, ademasademás, ir incrementando i de a 2, 4, 2, 4.. (**)
 
aumentar=2
Si N = 1, entonces el numeronúmero no es factorizable.
si N = 2, o N = 3: agregamos N a Ps, devolvemos Ps
i=6
Línea 58:
 
 
(*): Un numeronúmero compuesto (llamemoslo C) no puede tener masmás de un factor primo que sea mayor a su raizraíz cuadrada
 
Dem: Supongamos q sí puede haber masmás de uno. Llamemos A y B a esos dos numerosnúmeros primos. Llamemos P1, P2, .. Pn al resto de los numerosnúmeros primos factores de C.
Sea dA = A - raizcuad(C)
Sea dB = B - raizcuad(C)
Si A y B son mayores que la raizraíz cuadrada de C, entonces dA y dB seranserán positivos
Entonces C = A*B*P1*P2... = (raizcuad(C)+dA)*(raizcuad(C)+dB)*P1*P2... = (raizcuad(C)*raizcuad(C) + dA*raizcuad(C) + dB*raizcuad(C) + dA*dB)*P1*P2... = (C + (dA+dB)*raizcuad(C) + dA*dB)*P1*P2...
C*P1*P2.. + (dA+dB)*raizcuad(C)*P1*P2... + dA*dB*P1*P2...
Obviamente, toda esa suma es mayor a C. Como partimos diciendo que C era igual a esa suma llegamos a una contradiccioncontradicción
Por lo tanto, a lo sumo un factor puede ser mayor que la raizraíz cuadrada de C.
 
(**) Los numerosnúmeros primos (mayores que 3) pueden expresarse de la siguiente forma: 6n±1 (siendo esta la masmás eficiente para soluciones iterativas de programacionprogramación).
Dem: Todo numeronúmero natural puede expresarse como 6n±r, para algunalgún n. R variara solo entre 0 y 5.
6n+0 es divisible por 6 SIEMPRE
6n+2 es divisible por 2 SIEMPRE
6n+3 es divisible por 3 SIEMPRE
6n+4 es divisible por 2 SIEMPRE
6n+1 y 6n-1 (o lo que es lo mismo a efectos del analisis, 6n+5), no proporcionan ninguna garantiagarantía de divisibilidad, por lo tanto los numerosnúmeros primos solo pueden encontrarse entre ellos).