G113 La suite aléatoire de diviseurs [*** à la main et avec ordinateur]
Solution de Paul Voyer Pour N=1,
E(N) = 1.
Pour N premier, qui a donc 2 diviseurs, 1 et N u2 N proba 1/2 longueur E(N)+1
1 proba 1/2 longueur 1 E(N) = 1+ (1/2)(E(N)) + (1/2)
(1/2)E(N) = 1+(1/2)
E2(N) = 3 = 1+(1+1/2+1/4+1/8+....)
Si N a 3 diviseurs, c'est le carré d'un nombre premier (exemple : 4, a pour diviseurs 4, 2, 1)
u2 N 1/3
div2 1/3 premier
1 1/3
E(N) = 1+ (1/3)(E(N) +E(div2)+E(1)) (2/3)E(N) = 1 + (1/3)(E(div2)+E(1)) E(N) = 3/2+(1/2)(3+1)
E3(N) = 7/2
Si N a 4 diviseurs, (exemple : 6 a pour diviseurs 6, 3, 2, 1 ; 8 a 8, 4, 2, 1)
u2 N 1/4
div2 1/4 div2 a 2 ou 3 diviseurs (exemples N=6, u2=3 ; N=8, u2=4) div3 1/4 premier
1 1/4
(3/4)E(N) = 1 +(1/4)(E(N)+E(div2)+E(div3)+E(1))
- si div2 est premier : E4(N) = 4/3 + (1/3)(3+3+1) = 11/33.667 - si div2 est un carré : E4(N) = 4/3 +(1/3)(7/2+3+1) = 23/63.833 Pour les premières valeurs, on peut calculer facilement :
1 1 1.000
2 3 3.000
3 3 3.000
4 7/2 3.500
5 3 3.000
6 11/3 3.667
7 3 3.000
8 23/6 3.833
9 7/2 3.500
10 11/3 3.667
11 3 3.000
12 121/30 4.033
Et voir que le nombre 12 est le plus petit N dont E(N) soit >4.
E(12) = 6/5 + (1/5)(E(6)+E(4)+E(3)+E(2)+E(1)) = 121/30
Ça se complique très vite lorsque N augmente, et il devient ardu de généraliser.
Un calcul par macro Excel donne les valeurs "qui battent le record" jusqu'à E(N) = 5
N E(N) 1 1.0000 2 3.0000 3 3.0000 4 3.5000 6 3.6667 8 3.8333
12 4.0333
16 4.0833 24 4.2905 36 4.3417 48 4.4897 72 4.5635 96 4.6527 144 4.7382 192 4.7910 240 4.8027 288 4.8829 384 4.9111 432 4.9223 480 4.9410
576 5.0067
720 5.0078
Le plus petit N tel que E(N)>5 est 576 = 64x9 = 26x32.
Le plus petit N tel que E(N)>6 est estimé de l'ordre de plusieurs millions.
Pour info, la macro Excel utilisée : Sub Diviseurs()
Max = 720 maxi = 0 Cells(1, 1) = 1 Cells(1, 2) = 1
For a = 2 To Max ' nombre N
Cells(a, 1) = a Cells(a, 2) = 0
k = 0 ' rang du diviseur
d = 0
For b = 1 To a - 1 c = a / b
If Int(c) <> c Then GoTo suite2 k = k + 1
d = d + Cells(b, 2) suite2:
Next b
Cells(a, 2) = (d + k + 1) / k If (Cells(a, 2) < maxi) Then GoTo suite
maxi = Cells(a, 2) ' faire apparaître les "records battus"
Cells(a, 3) = maxi suite:
Next a End Sub