El día 29/10/18 publiqué en Twitter (@connumeros) la
siguiente propiedad del número de fecha 291018:
291018
presenta dos productos muy parecidos basados en el número 540:
291018=(540-33)(540+34)
291018=(540-7)(540+6)
Es algo parecido a la diferencia de cuadrados (suma por
diferencia) con el añadido de una unidad al sumando o al sustraendo. Pueden
darse los dos casos, que representaremos por
N=(m+p)(m-p+1) o bien N=(m+p)(m-p-1)
Al primer caso le llamaremos C(-1), porque el sustraendo
es una unidad menor que p, y al segundo C(+1).
Es fácil ver que N
ha de ser par, pues si m y p son ambos pares o impares, su suma m+p será par, y si son de distinta
paridad, lo es el otro factor. Al multiplicar siempre habrá un factor par, lo
que convierte también en par el producto.
A la inversa, todo número par mayor que 2 (para evitar el
valor 0) presenta dos soluciones triviales:
Todo número par n>2 cumple esta descomposición haciendo
m=n/2+1 y p=n/2-1, pues entonces n=(n/2+1+n/2-1)(n/2+1-(n/2-1)-1)=n*1
También cumple esta otra: m=n/2, p=n/2, con
n=(n/2+n/2)(n/2-n/2+1)=n*1
A partir de ahora eliminaremos estos dos casos, y sólo
consideraremos el caso m-p>2.
Con esa restricción, el primer número que admite esta
descomposición es el 10, si hacemos m=4 y p=1
10=(4+1)(4-2)=5*2
Será pues un caso del tipo C(+1).
Para saber si un número se puede descomponer de esta forma
podemos usar la siguiente función:
Public Function sumapordif$(n) ‘Es
de tipo string para contener soluciones
Dim m, p, a, k
Dim c$
c$ = "": k = 0 ‘c$
contiene soluciones y k las cuenta
For m = 2 To n - 1
For p = 1 To m – 3 ‘Respetamos una
diferencia mayor que 2
a = 0
If n = (m + p) * (m - p - 1) Then a = 1 ‘Probamos
las dos fórmulas
If n = (m + p) * (m - p + 1) Then a = -1
If a <> 0 Then k = k + 1: c$ = c$ +
Str$(m) + Str$(p) + "#" + Str$(a)
‘Si alguna de las dos se verifica, se incorpora la
solución y se incrementa el contador
Next p
Next m
If k > 0 Then c$ = Str$(k) + c$ ‘Se
incorpora el contador a la solución
sumapordif = c$
End Function
Con ella podemos descubrir los primeros números
pares que admiten solución:
10
1 4 1# 1
14
1 5 2# 1
18
2 5 1# 1 6 3# 1
20
1 4 1#-1
22
1 7 4# 1
24
1 6 2# 1
26
1 8 5# 1
28
2 5 2#-1 6 1# 1
30
3 5 1#-1 7 3# 1 9 6# 1
34 1
10 7# 1
36
3 6 3#-1 7 2# 1 8 4# 1
38
1 11 8# 1
40
2 6 2#-1 7 1# 1
42
3 6 1#-1 9 5# 1 12 9# 1
44
2 7 4#-1 8 3# 1
46
1 13 10# 1
48
1 10 6# 1
50
3 7 3#-1 8 2# 1 14 11# 1
52
2 8 5#-1 9 4# 1
54
4 7 2#-1 8 1# 1 11 7# 1 15 12# 1
56
1 7 1#-1
58
1 16 13# 1
60
5 8 4#-1 9 3# 1 9 6#-1 10 5# 1 12 8# 1
Para cada número figura en primer lugar el número
de soluciones. Así, 60 presenta 5 soluciones. Después figuran los valores de m
y p seguidos de # y de +1 o -1 según el tipo de solución.
Vemos que la solución para el 54 es 4 7 2#-1 8 1# 1 11 7# 1 15 12# 1. Eso
significa que posee cuatro soluciones, una del tipo C(-1) y las otras del otro
tipo.
En efecto, se cumple:
54=(7+2)(7-1)=(8+1)(8-2)=(11+7)(11-8)=(15+12)(15-13)
Soluciones dobles con el mismo valor de m
Un problema más difícil es el de determinar si un
número, como el 291018 admite dos (o más) soluciones con el mismo valor de m. El algoritmo puede resultar algo
complejo, por lo que hay que estudiarlo con atención. Para los valores de m usamos el rango desde 2 hasta la
mitad del número, ya que m+p ha de ser divisor propio de n (si desechamos los
casos triviales). Después, para cada valor de m contamos los casos favorables
y, si son mayores que 1, los reservamos en la variable c$ para construir la
función. Este es el listado:
Public Function sumapordifdup$(n)
Dim p, h, v, b, m, n2
Dim c$
If n Mod 2 <> 0 Then sumapordifdup =
"": Exit Function ‘Desechamos los impares
n2 = n / 2 ‘n/2 es el tope para m
v = 0 ‘Contador de soluciones si
procede
m = 2 ‘Inicio de m
c$ = "" ‘Contenedor de la
solución
While m < n2 And v = 0 ‘Avanza
hasta la mitad de n si no hay
solución
p = 1: h = 0: c$ = "" ‘Se
inician los valores para p
While p < m - 1 And v = 0
b = m + p ‘Se construye la suma m+p para ver si es divisor
If n Mod b = 0 Then ‘Si es divisor,
se prueban las dos posibilidades
If n = b * (m - p - 1) Or n = b * (m - p +
1) Then c$ = c$ + Str$(m) + Str$(p): h = h + 1
‘La línea anterior es fundamental, porque cuenta
soluciones para un mismo valor de m
End If
p = p + 1
Wend
If h > 1 Then v = h ‘Si hay más
de una solución, se para el proceso
m = m + 1
Wend
If v>0 then sumapordifdup$ = c$ else
sumapordifdup$ = “”
End Function
Aplicada esta función a nuestro valor 291018 se
obtiene:
Coincide con el planteamiento inicial de esta
entrada.
Esta función no nos informa sobre si el tipo es
C+1 o C-1, pero es que se ha querido simplificar. Después de obtenida la
solución se puede efectuar una comprobación manual.
Con esta función podemos obtener los primeros
números que satisfacen una relación doble como la solicitada:
N
Valores de m (duplicado) y p
36
7 2 7 5
60
9 3 9 6
70
9 1 9 5
90
11 4 11 7
126
12 2 12 6
168
15 6 15 9
180
14 1 14 6
198
15 3 15 7
216
17 7 17 10
270
19 8 19 11
286
18 4 18 8
300
18 2 18 7
330
21 9 21 12
378
20 1 20 7
390
21 5 21 9
396
23 10 23 13
450
22 3 22 8
468
25 11 25 14
Por ejemplo, 330=(21+9)(21-10)=(21+12)(21-11)
Posee, pues, las dos soluciones pedidas para el valor 21, que era lo exigido.
Vemos que existen muchos ejemplos de una propiedad
que parecía más restrictiva, pero este tipo de hechos no se descubren hasta no
emprender el estudio.
Si descomponemos estos números en factores primos,
observaremos que poseen más de cuatro divisores, lo que propicia que se dé la
casualidad que estamos comentando:
No hay comentarios:
Publicar un comentario