jueves, 7 de abril de 2011

Los múltiplos acunan

Toma el número 231. Ve encontrando sus múltiplos hasta que uno de ellos contenga 231 entre sus cifras, sin ser la primera ni la última. Tardarás un poco, porque esto no ocurre hasta 231*533=123123.

Elige otro, como el 2011. Necesitarás multiplicarlo por 5973 para obtener 12011703.

Llamaremos, con un poco de humor, “cuna” a ese múltiplo que acoge las cifras del número, pero rodeadas de otras que le den calor.

¿Cómo encontrar la cuna de cualquier número entero? Aquí entraríamos en la programación de macros para las hojas de cálculo. Lo intentamos.

Mediante potencias de 10

Todo número de cinco cifras (por ejemplo) abcde es igual a a*104+b*103+c*102+d*10+e. Si otro número más pequeño contiene algunas de esas cifras en el mismo orden, por ejemplo bcd, su expresión será b*102+c*10+d. Luego deberemos intentar localizar bcd en abcde mediante esas expresiones.

Necesitaremos las funciones numcifras y cifra

(ver http://hojaynumeros.blogspot.com/2010/11/aprender-comprobando.html)

Un posible código para ver si b es cuna de a sería:

Function escuna(b,a) as boolean Ver si las cifras de b acunan a las de a
Dim m,n,q
Dim e as boolean


m=numcifras(a)
n=numcifras(b)
e=false
for q=n-1 to m+1 step -1 Se procura no leer ni la primera cifra ni la última
c=0
for k=1 to m
c=c+cifra(b,q-k+1)*10^(m-k) Se construye un número con m cifras
next k
if a=c then e=true El número construido es a. Lo hemos encontrado
next q
escuna=e
End function

Mediante la traducción a texto

Si tanto a como b los traducimos a formato de texto (string) es más fácil localizar dentro de b. Aquí tienes el código:

Function escuna(b,a) as boolean Ver si las cifras de b acunan a las de a
dim s$,t$
dim m,n


s$=str$(b) Convierte b en un texto
n=len(s$)-1
s$=right(s$,n) Le suprime el primer carácter en blanco
t$=str$(a)
m=len(t$)-1
t$=right(t$,m) Hace lo mismo con a
r=instr(b$,a$) Averigua si las cifras de a están incluidas en las de b
if r>1 then escuna=true else escuna=false
end function

Una vez que tienes definida la función escuna te bastará con buscar resultados en tablas de hoja de cálculo o creando bucles en Basic. Aquí tienes algunos resultados:

Las primeras cunas son (para 1,2,3,….):


Número
Factor
Cuna
1
210
210
2
60
120
3
44
132
4
35
140
5
30
150
6
27
162
7
25
175
8
23
184
9
22
198
10
110
1100
11
192
2112
12
94
1128
13
87
1131
14
82
1148
15
77
1155


Observa que se necesitan factores grandes. No es tan simple reproducir las cifras en un múltiplo.

Entre los primeros 100 números el más tardío es el 27, que necesita ser multiplicado por 471 para que se reproduzcan las cifras 27: 27*471=12717.
Entre los primeros 500 es el número 271 el que necesita un factor mayor: 271*4691=1271261.

El menos exigente es el 91, que sólo con el factor 21 ya reproduce las cifras 91*21=1911.

¿Se podrán acunar todos los enteros? La intuición nos dice que es probable, ya que el factor se puede hacer tender a infinito y la probabilidad de que no aparezca la pauta deseada se haría cada vez más pequeña. Supongamos que buscamos la pauta 253. En un número de n cifras se podrían leer n-2 pautas consecutivas. La probabilidad de encontrar 253 en una pauta es de 0,001, luego la de no encontrarla será de 0,999, y la de no encontrarla en n-2 pautas de 0,999n-2 y esa expresión tiende a cero si n tiende a infinito.

Bueno, no hay que tomarse el párrafo anterior muy en serio. Sólo es una idea vaga y aproximada, pero que quizás apunte en buena dirección. Si alguien sabe algo más, que nos lo diga.

4 comentarios:

Claudio dijo...

Hola Antonio, esta serie esta en la OEIS : http://oeis.org/A084042
Saludos

Antonio Roldán Martínez dijo...

Gracias, Claudio

Estos de OEIS se adelantan siempre, pero fue bonito inventarse los códigos en VBA.
Saludos.

Anónimo dijo...

Hi there,

I have a question for the webmaster/admin here at hojaynumeros.blogspot.com.

May I use part of the information from this post right above if I provide a link back to your site?

Thanks,
Oliver

Antonio Roldán Martínez dijo...

Yes, you can