Polynômes cyclotomiques [Python]

Soit {\varphi} l’indicatrice d’Euler. Pour {n\ge1}, on note {\Delta_n=\{k\in\{1,\ldots,n\}:\operatorname{PGCD}(k,n)=1\}}, de cardinal {\varphi(n)}, et {U_n=\{\zeta\in\mathbb C:\zeta^n=1\}}. Une racine est primitive si {\zeta^k\ne1} pour {1\le k\lt n} ; leur ensemble est {U_n^*}. On pose
{\phi_n(X)=\prod_{\zeta\in U_n^*}(X-\zeta)}Les questions [P] utilisent Python ; {\mathbb Z[X]} désigne les polynômes à coefficients entiers.

1. (a) [P] Écrire liste(n) renvoyant les entiers de {1} à {n} premiers avec {n}, puis une fonction phi(n). Vérifier les résultats pour {n=36} et pour les valeurs de {\varphi(n)} jusqu’à {17}.

1. (b) [P] Posons {S_n=\sum\limits_{d\mid n}\varphi(d)}. Écrire sumphi(n) et vérifier que {S_n=n} pour {1\le n\le17}.

2. (a) Démontrer que {X^n-1=\prod\limits_{d\mid n}\phi_d(X)}.

2. (b) Déterminer la somme {S_n}.

2. (c) Montrer que {\phi_n} est à coefficients entiers.

Soient {p\lt q\lt r} des nombres premiers vérifiant {r\lt p+q}. Posons {n=pqr} et définissons {P} par
{(X-1)P(X)=(X^p-1)(X^q-1)(X^r-1)}

3. (a) Pour {k\ge1}, notons {Q_k=X^k-1}. Montrer que
{\phi_n=\frac{Q_nP}{Q_{pq}Q_{pr}Q_{qr}}}

3. (b) Montrer qu’il existe {S\in\mathbb Q[X]} tel que {\phi_n-P=X^{pq}S}.

3. (c) En déduire que le coefficient de {X^r} dans {\phi_n} est {-2}.

3. (d) Montrer que les coefficients de {\phi_{105}} ne sont pas tous dans {\{-1,0,1\}}.

À titre documentaire, le PDF propose le calcul numérique suivant des coefficients en degrés décroissants :