Regroupement des nombres naturels en paires de nombres premiers entre eux
Diviser la séquence {1, 2, 3, ..., n} en n/2 groupes, où tous les nombres de chaque groupe sont premiers entre eux, est réalisé grâce à un algorithme simple. Les nombres premiers et 1 sont placés dans le premier groupe. Les nombres pairs >2 forment les éléments de départ des groupes restants. Les nombres composés impairs sont distribués à l'aide de la formule pos_{x_i} = ⌊x_i/4 + 0,5⌋. Cela garantit que le pgcd de chaque nombre impair avec le leader pair du groupe est égal à 1.
Logique de distribution
L'algorithme repose sur les propriétés des nombres composés impairs : ils prennent tous la forme 4k ± 1 pour un certain k. Ici, k correspond au numéro du groupe. Pour le leader pair 2k, pgcd(2k, 4k ± 1) = 1, puisque 4k ± 1 ≡ ±1 (mod 2k).
Le premier groupe contient :
- 1
- Tous les nombres premiers
Les groupes restants (k ≥ 2) :
- Première position : nombre pair 2k
- Deuxième position (facultative) : nombres composés impairs x, où pos_x = k
Certains groupes peuvent contenir 0 ou 2 nombres impairs (exemples : k=3,7 — vide ; k=14,16 — deux chacun).
Exemple pour n=24
Un tableau illustre la distribution :
| Groupe 1 | 1, 2, 3, 5, 7, 11, 13, 17, 19, 23 |
| Groupe 2 | 4, 9, 15, 21 |
| Groupe 3 | 6 |
| Groupe 4 | 8, 25? (pour n=24 : 8) |
| ... | ... |
La vérification de la coprimalité au sein des groupes est confirmée par les propriétés : les nombres premiers sont premiers entre eux deux à deux, pgcd(2k, 4k±1)=1.
Justification mathématique
- Nombres premiers : Deux nombres premiers p, q (p ≠ q) ont pgcd(p,q)=1.
- Leaders pairs : 2k avec k≥2 est impair, mais 2k est pair.
- Composés impairs : x = 4k ±1, pgcd(2k, x) = pgcd(2k, ±1 mod 2k) =1.
- Entre impairs dans un groupe : Les paires possibles (rares) sont également premières entre elles par construction, car elles sont distribuées modulo.
Cela découle indirectement du théorème de Dirichlet sur les nombres premiers dans les progressions arithmétiques, mais directement de la forme des nombres impairs.
Implémentation en Python
Pour automatiser le découpage :
def group_naturals(n):
primes = [1] # 1 + nombres premiers
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] # tronquer les 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
Le code génère les groupes pour un n donné, en vérifiant les propriétés.
Points clés
- Tous les groupes contiennent uniquement des nombres premiers entre eux.
- Le nombre de groupes est exactement n/2 pour tout n naturel.
- Les composés impairs sont distribués par pos = ⌊x/4 + 0,5⌋.
- Justification : x=4k±1 ⇒ pgcd(2k, x)=1.
- Premier groupe : 1 et tous les nombres premiers.
— Editorial Team
Aucun commentaire pour le moment.