Proceso FactorizacionPollard Definir n como entero; Definir x como entero; Definir y como entero; Definir d como entero; Escribir "Ingrese el numero a factorizar:"; Leer n; x <- 2; y <- 2; d <- 1; Mientras d = 1 Hacer x <- PRNG (x); y <- PRNG (PRNG(y)); d <- AlgoritmoEuclidesBinario (ABS(x-y),n) ; FinMientras Si d = n Entonces Escribir "El algoritmo ha fallado"; FinSi Escribir "El numero ",n," es divisible entre ",d; FinProceso SubProceso MCD <- AlgoritmoEuclidesBinario ( u, v ) Definir MCD Como Entero; Definir desplazamiento Como Entero; Definir continuar como logico; Definir temporal como entero; desplazamiento <- 1; Mientras ((u %2 = 0) & (v % 2 = 0)) Hacer u <- u /2; v <- v /2; desplazamiento <- desplazamiento*2; FinMientras continuar <- verdadero; Mientras u % 2 = 0 Hacer u <- u / 2; FinMientras Mientras continuar Hacer Mientras v % 2 = 0 Hacer v <- v / 2; FinMientras Si u > v Entonces temporal <- u; u <- v; v <- temporal; FinSi v <- v - u; Si v = 0 Entonces continuar <- falso; FinSi FinMientras MCD <- desplazamiento*u; FinSubproceso SubProceso aleatorio <- PRNG( x ) Definir aleatorio como entero; aleatorio <- (16807*x + 12345); aleatorio <- aleatorio % 65536; FinSubProceso
Basado en la Wikipedia
No hay comentarios:
Publicar un comentario