27.12.2012 Views

Introducción a la teoría de números. Ejemplos y - TEC-Digital

Introducción a la teoría de números. Ejemplos y - TEC-Digital

Introducción a la teoría de números. Ejemplos y - TEC-Digital

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

EJERCICIOS 157<br />

En general, <strong>de</strong>bemos <strong>de</strong>cidir un límite G en <strong>la</strong> búsqueda <strong>de</strong> divisores. Si se divi<strong>de</strong> únicamente<br />

por divisores primos ≤ G, se harían π(G) ≈ G/ln G divisiones. Si se divi<strong>de</strong> por 2,<br />

= 3/ln G<br />

G/ln G<br />

son divisiones útiles. Si G = 106 , tendríamos ≈ 22% divisiones útiles. En este caso, un<br />

ciclo probando divisiones por primos únicamente es ≈ 1/0.22 = 4.6 veces más lento11 .<br />

3 y 6k ± 1 se harían aproximadamente G/3 divisiones 10 <strong>de</strong> <strong>la</strong>s cuales G/3<br />

Cuando se juzga <strong>la</strong> rapi<strong>de</strong>z <strong>de</strong> un programa se toma en cuenta el tiempo <strong>de</strong> corrida en el<br />

peor caso o se toma en cuenta el tiempo promedio <strong>de</strong> corrida (costo <strong>de</strong> corrida <strong>de</strong>l programa<br />

si se aplica a muchos <strong>números</strong>). Como ya sabemos (por el Teorema <strong>de</strong> Mertens) hay un<br />

porcentaje muy pequeño <strong>de</strong> <strong>números</strong> impares sin divisores ≤ G, así que en promedio,<br />

nuestra implementación terminará bastante antes <strong>de</strong> alcanzar el límite G (el “peor caso”<br />

no es muy frecuente) por lo que tendremos un programa con un comportamiento <strong>de</strong>seable.<br />

Detalles <strong>de</strong> <strong>la</strong> implementación.<br />

• Para <strong>la</strong> implementación necesitamos saber cómo generar los enteros <strong>de</strong> <strong>la</strong> forma 6k ± 1.<br />

Alternando el −1 y el 1 obtenemos <strong>la</strong> sucesión<br />

5, 7, 11, 13, 17, 19,...<br />

que iniciando en 5, se obtiene alternando los sumandos 2 y 4. Formalmente, si m k = 6k − 1<br />

y si s k = 6k + 1 entonces, po<strong>de</strong>mos poner <strong>la</strong> sucesión como<br />

7, 11, 13,...,m k, s k, m k+1, s k+1,...<br />

Ahora, notemos que s k = m k + 2 y que m k+1 = s k + 4 = m k + 6. La sucesión es<br />

7, 11, 13,...,m k, m k + 2, m k + 6, m k+1 + 2, m k+1 + 6,...<br />

En el programa <strong>de</strong>bemos probar si el número es divisible por 2, por 3 y ejecutamos el ciclo<br />

p = 5;<br />

While p ≤ G Do{<br />

Probar divisibilidad por p<br />

Probar divisibilidad por p + 2<br />

p = p + 6 }<br />

10Pues los <strong>números</strong> naturales (≤ G ) son <strong>de</strong> <strong>la</strong> forma 6k + m con m ∈ {0,1,...,5} y solo estamos consi<strong>de</strong>rando m = 1,5,<br />

es <strong>de</strong>cir una tercera parte.<br />

11Aún si se almacena previamente una tab<strong>la</strong> <strong>de</strong> primos en forma compacta, esto consume tiempo [9]

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!