G113 La suite aléatoire de diviseurs [*** à la main et avec ordinateur]
Solution de Daniel Collignon
Soit D(N) = {1=d1, …, dn=N} l’ensemble des diviseurs de N où n = Card(D(N)) = d(N) désigne le nombre de diviseurs de N.
Considérons les états 1=d1, …, dn=N correspondant au terme de la suite à un instant t, sachant qu’à t=1, l’état initial vaut u1=N, et l’état final étant 1.
Le diagramme de la chaîne de Markov peut être vu comme un graphe complet entre les états avec des probabilités de transition di dj : p(dj sachant di) = 1/d(di) si dj divise di, = 0 sinon Voici l’exemple du diagramme de la chaîne de Markov pour N=6 :
E(N) = nombre de termes écrits pour atteindre l’état final (1) partant de l’état (N).
E(1) = 1
Nous dérivons du diagramme, l’équation E(N) = somme(i=1..n ; (1/n)*(1+E(di))).
D’où la relation de récurrence E(N) = 1 + (2 + somme(i=2..n-1 ; E(di))) / (n-1) avec n = d(N).
Pour un nombre N = produit(i=1..k ; pi^qi), nous avons n = d(N) = produit(i=1..k ; (1+qi)).
Dans la suite, p et q désignent des nombres premiers.
Pour N=p, nous avons n=2, d’où E(N)=E(2)=E(3)=E(5)=E(7)=E(11)=3<4 Pour N=p^2, nous avons n=3, d’où E(N)=E(4)=E(9)=7/2<4
Pour N=p*q, nous avons n=4, d’où E(N)=E(6)=E(10)=11/3<4 Pour N=p^3, nous avons n=4, d’où E(N)=E(8)=23/6<4
Pour N=p^2*q, nous avons n=6, d’où E(N)=E(12)=121/30>4 12 est donc le plus petit entier recherché
576 est le plus entier N tel que E(N)>5, comme le programme suivant permet de le montrer.
Questions : E(n) a-t-il une limite en +oo ? peut-on trouver un équivalent ? Sub Esperance()
' paramètre à modifier (<65536) borne = 1000
' dimensionnement du tableau ReDim e(borne) As Double 'initialisation du premier terme e(1) = 1
6
3
2 1
1/4
1/4 1/4
1/4
1/2 1/2
1/2 1/2
' calcul par récurrence de n jusqu'à borne For n = 2 To borne
' initialisation
' t variable temporaire
' d nombre de diviseurs (au minimum 2 pour un nombre premier) t = 0
d = 2
racn = Sqr(n) eracn = Int(racn)
' optimisation en regroupant les diviseurs par 2 et en s'arrêtant à la racine carrée de n For i = 2 To eracn
If (n Mod i) = 0 Then t = t + e(i) + e(n / i) d = d + 2
End If Next i
' si n est un carré parfait on a compté deux fois le cas racine carrée de n If eracn = racn Then
t = t - e(eracn) d = d - 1 End If
' affectation finale selon la formule de récurrence e(n) = (d + 1 + t) / (d - 1)
Next n
' affichage des étiquettes Cells(1, 1) = "N"
Cells(1, 2) = "E(N)"
' affichage du résultat For lig = 1 To borne Cells(lig + 1, 1) = lig Cells(lig + 1, 2) = e(lig) Next lig
' affichage du plus petit N tel que E(N) > 4 lig = 1
While e(lig) <= 4 lig = lig + 1 Wend
Cells(1, 4) = "Nmin4"
Cells(2, 4) = lig
' affichage du plus petit N tel que E(N) > 5 lig = 1
While e(lig) <= 5 lig = lig + 1 Wend
Cells(1, 5) = "Nmin5"
Cells(2, 5) = lig End Sub