La matrice des ppcm(i,j) [Python]

Les questions [P] utilisent Python. Pour {n\ge1}, on définit {M_n=(\operatorname{ppcm}(i,j))_{1\le i,j\le n}}. Le ppcm est le plus petit entier strictement positif multiple des deux arguments. Les indices commencent à {1}. L’objectif est de calculer {\det M_n}.

1. (a) [P] Écrire les fonctions pgcd et ppcm de deux entiers positifs.

1. (b) [P] Écrire M(n) et afficher {M_3} et {M_6}.

1. (c) [P] Afficher les déterminants pour {1\le n\le10}.

Pour {a\ge1}, on note {P_a} son ensemble de diviseurs premiers et {D_a} son ensemble de diviseurs positifs. On pose
{f(a)=\frac1a\prod_{p\in P_a}(1-p),\quad g(a)=\sum_{d\in D_a}f(d)}En particulier {f(1)=1}.

2. (a) [P] Écrire f(a) et g(a) à valeurs rationnelles. Vérifier {f(2015)=-288/403} et {g(2015)=1/2015}. Afficher {g(a)} pour {1\le a\le10}.

2. (b) Si {a,b} sont premiers entre eux, comparer {P_{ab},P_a,P_b}. Montrer que {(d,\delta)\mapsto d\delta} est une bijection de {D_a\times D_b} sur {D_{ab}}. En déduire {f(ab)=f(a)f(b)} et {g(ab)=g(a)g(b)}.

2. (c) Montrer que {g(a)=1/a}. Indication : commencer par une puissance de nombre premier.

On définit {A=(1/\operatorname{pgcd}(i,j))}, {B=(b_{k,j})} avec {b_{k,j}=f(k)} si {k\mid j} et {0} sinon, {C=(c_{i,k})} avec {c_{i,k}=1} si {k\mid i} et {0} sinon, et {\Delta=\operatorname{diag}(1,\ldots,n)}.

3. (a) Montrer que {M_n=\Delta A\Delta} et {CB=A}.

3. (b) En déduire {\det M_n=n!\prod\limits_{a=1}^n(af(a))}.

3. (c) Montrer finalement que {\det M_n=n!\prod\limits_{p\le n,\ p\text{ premier}}(1-p)^{\lfloor n/p\rfloor}}.

3. (d) [P] Vérifier cette formule pour {1\le n\le10}.

Complément du corrigé : les matrices de la factorisation

Indications Python

np.zeros((n,p),dtype=int) crée une matrice nulle entière. SymPy fournit primefactors, divisors, primerange et Rational. math.factorial calcule la factorielle.