domingo, 29 de marzo de 2009

Sobre una propuesta de Claudio

Claudio, en su blog de Números, nos propuso hace unos días esta cuestión:

a) Encontrar todos los primos cuyo dígitos son consecutivos y están ordenados de menor a mayor (yo encontré cinco), y de mayor a menor.


No resistí la tentación de programarlo en el Basic de la hoja de cálculo, con estos resultados:

Primos con cifras ascendentes:

Código

Sub buscaprimos(n) n es una cifra igual a 1,3,7 ó 9
dim m,p,n

m=n:p=n

for i=1 to n
p=p-1 Cifras crecientes
m=10^i*p+m Se forma el número con cifras crecientes
if esprimo(m) then msgbox(m) Si es primo, se comunica
next i

End Sub

Le fui dando a n los valores 1,3,7 y 9, me resultaron las soluciones 23, 67, 89, 4567 y 23456789

Para los descendentes sólo hay que corregir un detalle:

Sub buscaprimos(n) n es una cifra igual a 1...9 (no tiene que ser impar)
dim m,p,n

m=n:p=n

for i=1 to n
p=p-1 Cifras decrecientes
m=10*m+p Se forma el número con cifras decrecientes

if esprimo(m) then msgbox(m) Si es primo, se comunica
next i

End Sub

Con este otro código, dando valores a n entre 1 y 9, me resultaron dos soluciones: 43 y 76543.

Espero no haberme equivocado. Lo que me interesaba era dar a conocer la simplicidad que puede tener un algoritmo que después resulta bastante potente.

No hay comentarios: