Pourquoi A(13,1) est multiple de 52 ?
Ben tout simplement parce que :
13! = 1.2.3.4.5.6.7.8.9.10.11.12.13
et que
52 = 2.13
On retrouve donc tous les facteurs premiers de 52 dans A(13,1).
Pourquoi A(14,1) est multiple de 52 ?
Tout simplement parce que d'après sa définition, il peut être exprimé comme un multiple de A(13,1) c'est à dire un multiple de 13!
En effet, par définition :
A(14,1) = 14.A(13,1) + 1*A(14,0)
Or on sait que A(14,0) = 0 car tout A(m,n) avec (m<1) OU (n<1) est nul.
On a donc bien
A(14,1) = 14.A(13,1) = 14.13!
donc A(14,1) est bel et bien un multiple de 52
C'est aussi, par ailleur la factorielle de 14.
Donc, tous les A(m,1) avec m>12 seront tous des multiples de 52.
Et par symétrie, A(1,n) avec n>12 seront tous des multiples de 52.
Mais bon, concernant A(13,2) on constate que A(13,2)=161902540800 = 3113510400 * 52 donc A(13,2) est aussi un multiple de 52
N'y aurait-il pas un moyen d'exprimer A(13,2) comme un multiple de la factorielle 13! ? Est-il possible de trouver k tel que A(13,2)=k.13!
On sait par définition que A(13,2) = 13*A(12,2) + 2*A(13,1)
On sait que A(13,1) = 13! mais pour calculer A(12,2), le plus simple est de commencer par le haut du tableau des A(m,n)
par définition A(1,1)=1 c'est à dire que A(1,1)=1!
Calculons A(2,2) tout en laissant apparaitre les termes factoriels:
Par définition :A(2,2)=2.A(1,2) + 2.A(2,1)
Or on sait que A(2,1) =A(1,2) = 2!
On a donc :
A(2,2) = 2.2! + 2.2! = 4.2!
Calculons A(3,2) :
par définition A(3,2) = 3.A(2,2) + 2.A(3,1) avec A(2,2)= 4.2! et A(3,1) = 3!
On a donc A(3,2) = 3.4.2! + 2.3!
Or 3.4.2! = 4.3! = 4! on peut donc factoriser par la factorielle 3!
Il vient :
A(3,2) = 4.3! + 2.3! = 6.3!
Nous avons donc calculer successivement A(2,2)=4.2! et A(3,2)=6.3! Nous pouvons continuer ainsi de proche en proche et obtenir:
A(4,2)=8.4! , A(5,2)=10.5! , A(6,2)=12.6! , … , A(12,2)=24.12! , A(13,2)=26.13! , A(14,2)=28.14! ,etc
On a bien A(13,2)=13.A(12,2)+2.A(13,1)=13.24.12! + 2.13! = 24.13.12! + 2.13! = 24.13! + 2.13! = 26.13!
Et donc le grand mystère des A(m,n) avec m+n=15 s'éclaircit d'un seul coup, tous ces nombre d'Ackerman sont multiples de 52 car il peuvent s'exprimer directement sous la forme A(m,n)=k.13!
En effet, de proche en proche le tableau suivant peut être construit :
Code : Tout sélectionner
n 1 2 3 4 5 6 7 8 9 10 11 12 13 14
m
1 1! 2! 3! 4! 5! 6! 7! 8! 9! 10! 11! 12! 13! 14!
2 2! 4. 2! 6. 3! 8. 4! 10. 5! 12. 6! 14. 7! 16. 8! 18. 9! 20.10! 22.11! 24.12! 26.13! 28.14!
3 3! 6. 3! 9. 4! 12. 5! 15. 6! 18. 7! 21. 8! 24. 9! 27.10! 30.11! 33.12! 36.13! 39.14! 42.15!
4 4! 8. 4! 12. 5! 16. 6! 20. 7! 24. 8! 28. 9! 32.10! 36.11! 40.12! 44.13! 48.14! 52.15! 56.16!
5 5! 10. 5! 15. 6! 20. 7! 25. 8! 30. 9! 35.10! 40.11! 45.12! 50.13! 55.14! 60.15! 65.16! 70.17!
6 6! 12. 6! 18. 7! 24. 8! 30. 9! 36.10! 42.11! 48.12! 54.13! 60.14! 66.15! 72.16! 78.17! 84.18!
7 7! 14. 7! 21. 8! 28. 9! 35.10! 42.11! 49.12! 56.13! 63.14! 70.15! 77.16! 84.17! 91.18! 98.19!
8 8! 16. 8! 24. 9! 32.10! 40.11! 48.12! 56.13! 64.14! 72.15! 80.16! 88.17! 96.18! 104.19! 112.20!
9 9! 18. 9! 27.10! 36.11! 45.12! 54.13! 63.14! 72.15! 81.16! 90.17! 99.18! 108.19! 117.20! 126.21!
10 10! 20.10! 30.11! 40.12! 50.13! 60.14! 70.15! 80.16! 90.17! 100.18! 110.19! 120.20! 130.21! 140.22!
11 11! 22.11! 33.12! 44.13! 55.14! 66.15! 77.16! 88.17! 99.18! 110.19! 121.20! 132.21! 143.22! 154.23!
12 12! 24.12! 36.13! 48.14! 60.15! 72.16! 84.17! 96.18! 108.19! 120.20! 132.21! 144.22! 156.23! 168.24!
13 13! 26.13! 39.14! 52.15! 65.16! 78.17! 91.18! 104.19! 117.20! 130.21! 143.22! 156.23! 169.24! 182.25!
14 14! 28.14! 42.15! 56.16! 70.17! 84.18! 98.19! 112.20! 126.21! 140.22! 154.23! 168.24! 182.25! 196.26!
Vérifions:
A(15,6) = 10948059036794880000
15*6 = 90
19! = 121645100408832000
15.6.19! = 10948059036794880000 = A(15,6) = A(6,15)
Et voilà comment nous n'avons plus besoin de procédures de calcul récurrente et lente, ou de tableau à vecteurs pour calculer les A(m,n) que l'on sait maintenant calculer directement en fonction de m et n.
Code : Tout sélectionner
« * LAST + 2 - FACT * » »
1 "A" AREAD M:INPUT N:A=M*N:FOR I=1 TO M+N-2:A=A*I:NEXT I:PRINT STR$ M+","+ STR$ N,A:END
LBL"ACK RCL Y RCL Y + 2 - FACT * * RTN
LBL A STO 0 X:Y STO*0 + 2 - x! RCL*0 RTN
:ACK(m,n)
:Func
:If m<1 or n<1 Then
: Return 0
:Else
: Return m*n*(m+n-2)!
:EndIf
:EndFunc