Agrupación de Números Naturales en Pares de Números Coprimos
Dividir la secuencia {1, 2, 3, ..., n} en n/2 grupos, donde todos los números dentro de cada grupo son coprimos, se logra mediante un algoritmo sencillo. Los números primos y el 1 se colocan en el primer grupo. Los números pares >2 forman los elementos iniciales de los grupos restantes. Los números compuestos impares se distribuyen usando la fórmula pos_{x_i} = ⌊x_i/4 + 0,5⌋. Esto garantiza que el mcd de cada número impar con el líder par del grupo sea igual a 1.
Lógica de Distribución
El algoritmo se basa en las propiedades de los números compuestos impares: todos adoptan la forma 4k ± 1 para algún k. Aquí, k corresponde al número del grupo. Para el líder par del grupo 2k, mcd(2k, 4k ± 1) = 1, ya que 4k ± 1 ≡ ±1 (mod 2k).
El primer grupo contiene:
- 1
- Todos los números primos
Grupos restantes (k ≥ 2):
- Primera posición: número par 2k
- Segunda posición (opcional): números compuestos impares x, donde pos_x = k
Algunos grupos pueden contener 0 o 2 números impares (ejemplos: k=3,7 — vacíos; k=14,16 — dos cada uno).
Ejemplo para n=24
Una tabla muestra la distribución:
| Grupo 1 | 1, 2, 3, 5, 7, 11, 13, 17, 19, 23 |
| Grupo 2 | 4, 9, 15, 21 |
| Grupo 3 | 6 |
| Grupo 4 | 8, 25? (para n=24: 8) |
| ... | ... |
La verificación de la coprimalidad dentro de los grupos se confirma por las propiedades: los números primos son coprimos entre sí, mcd(2k, 4k±1)=1.
Justificación Matemática
- Números primos: Cualesquiera dos primos p, q (p ≠ q) tienen mcd(p,q)=1.
- Líderes pares: 2k con k≥2 es impar, pero 2k es par.
- Compuestos impares: x = 4k ±1, mcd(2k, x) = mcd(2k, ±1 mod 2k) =1.
- Entre impares en un grupo: Los pares posibles (raros) también son coprimos por construcción, ya que se distribuyen módulo.
Esto se deriva indirectamente del teorema de Dirichlet sobre primos en progresiones aritméticas, pero directamente de la forma de los números impares.
Implementación en Python
Para automatizar la división:
def group_naturals(n):
primes = [1] # 1 + primos
composites_odd = []
evens = []
for i in range(2, n+1):
if i % 2 == 0:
evens.append(i)
elif is_prime(i):
primes.append(i)
else:
composites_odd.append(i)
groups = [primes]
pos = {}
for x in composites_odd:
k = int(x / 4 + 0.5)
if k not in pos:
pos[k] = []
pos[k].append(x)
for k in range(2, n//2 +1):
group = [2*k]
if k in pos:
group.extend(sorted(pos[k]))
groups.append(group)
return groups[:n//2] # recortar extras
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
El código genera grupos para un n dado, verificando las propiedades.
Puntos Clave
- Todos los grupos contienen solo números coprimos.
- El número de grupos es exactamente n/2 para cualquier n natural.
- Los compuestos impares se distribuyen por pos = ⌊x/4 + 0,5⌋.
- Justificación: x=4k±1 ⇒ mcd(2k, x)=1.
- Primer grupo: 1 y todos los números primos.
— Editorial Team
Aún no hay comentarios.