ADVERTENCIA: LOS SIGUIENTES ALGORITMO SE ENTREGA "COMO SON" ("AS IS") SiN GARANTIA DE NINGUN TIPO. DEBE REALIZAR LAS VERIFICACIONES CORRESPONDIENTES ANTES DE EMPLEARLOS PARA CUALQUIER FIN. SOLO TIENEN UNA FINALIDAD EDUCATIVA.

miércoles, 14 de noviembre de 2012

Ejemplo de Algoritmo Factorizador de números Enteros de Phollar Rho


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