11.10.2015 Views

Divisores

LfDvOp

LfDvOp

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.

Esta función recorre los primeros números primos 2, 3, 5, 7, …<br />

(representados en el código por la variable pr(i)) y va calculando la<br />

función POTE para cada uno de ellos. Analiza si ninguno es cero y si<br />

forman una sucesión no creciente. De paso, almacena (1+POTE) para<br />

al final calcular el número de divisores. El esquena sería:<br />

Inicio una variable SIGUE a uno<br />

MIENTRAS el número N sea mayor que 1 y SIGUE>0<br />

Recorro los primeros números primos<br />

Para cada uno de ellos evalúo la función POTE, con lo N disminuirá<br />

Si POTE es nula o mayor que la anterior, hago SIGUE=0<br />

En caso contrario multiplico SIGUE por (1+POTE), con lo que preparo<br />

el cálculo del número de divisores<br />

FIN del mientras<br />

Por último, ESPRENAC toma el valor de SIGUE. Si es cero, es que el<br />

número no puede ser altamente compuesto y si no lo es, devolverá el<br />

número de divisores.<br />

Su código puede ser:<br />

Public Function esprenac(n)<br />

Dim p(20)<br />

Dim c, i<br />

Dim sigue<br />

c = n<br />

i = 0<br />

sigue = 1<br />

While c > 1 And sigue > 0<br />

If i < 20 Then<br />

i = i + 1<br />

p(i) = pote(c, pr(i))<br />

If p(i) = 0 Then sigue = 0<br />

c = c / pr(i) ^ p(i)<br />

sigue = sigue * (p(i) + 1)<br />

If i > 1 Then<br />

If p(i) > p(i - 1) Then sigue = 0<br />

End If<br />

92

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

Saved successfully!

Ooh no, something went wrong!