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