[<] Études arithmétiques [>] Petit théorème de Fermat

 
Exercice 1  5930  Correction  

Soient a,b et p un nombre premier. On suppose qu’il existe α* tel que pα divise le ppcm de a et b. Établir que pα divise a ou b.

Solution

Notons vp(n) la valuation p-adique n*:

vp(n)=max{k|pkn}.

On sait

vp(ab)=max(vp(a),vp(b)).

Si pα divise ab, alors max(vp(a),vp(b))α et donc vp(a)α ou vp(b)α. On en déduit que pα divise a ou b.

 
Exercice 2  1226   Correction  

Pour p𝒫 et n, on note vp(n) l’exposant de la plus grande puissance de p divisant n.

  • (a)

    Montrer que v2(1 000!)=994.

  • (b)

    Plus généralement, calculer vp(n!). On rappelle que

    x,pxp=x.

Solution

  • (a)

    v2(1 000!)=500+v2(500!) car 1000!=2500×500!×k avec k produit de nombres impairs.
    v2(1 000!)=500+250+125+62+31+15+7+3+1=994.

  • (b)

    En isolant les multiples de p dans le produit décrivant p!, on obtient

    vp(n!)=np+vp(np!)

    puis

    vp(n!)=np+n/pp+vp(n/pp!)

    or

    pxp=x

    avec x=n/p2 donne

    n/pp=np2

    puis finalement

    vp(n!)=np+np2++npk

    avec

    k=ln(n)ln(p).
 
Exercice 3  4412   

(Formule de Legendre)

  • (a)

    Soient p un nombre premier et n. Établir

    vp(n!)=i=1rnpi avec r=ln(n)ln(p).
  • (b)

    Application : Soient a,b. Montrer

    (2a)!(2b)!a!b!(a+b)!.
 
Exercice 4  2370      CENTRALE (MP)Correction  

On note 𝒫 l’ensemble des nombres premiers. Pour tout entier n>0, on note vp(n) l’exposant de p dans la décomposition de n en facteurs premiers. On note x la partie entière de x. On note π(x) le nombre de nombres premiers au plus égaux à x.

  • (a)

    Montrer

    vp(n!)=k=1+npk.
  • (b)

    Montrer que (2nn) divise p𝒫;p2npln(2n)ln(p).

  • (c)

    Montrer que (2nn)(2n)π(2n).

  • (d)

    Montrer que xln(x)=O(π(x)) quand x+

Solution

  • (a)

    Pour k suffisamment grand n/pk=0, la somme évoquée existe donc car elle ne comporte qu’un nombre fini de termes non nuls. n!=1×2××n, parmi les entiers allant de 1 à n, il y en a exactement n/p divisibles par p, n/p2 divisibles par p2, etc…donc

    vp(n!)=k=1+npk.
  • (b)

    On a

    (2nn)=(2n)!(n!)2.

    Pour tout p𝒫,

    vp((2n)!(n!)2)=k=1(2npk-2npk)

    or 2x-2x=0 ou 1 donc

    k=1(2npk-2npk)Card{k*|2n/pk>0}ln(2n)ln(p).

    De plus, les nombres premiers diviseurs de (2nn)=(2n)!(n!)2 sont diviseurs d’un entier inférieur à 2n (lemme d’Euclide) et sont donc eux-mêmes inférieur à 2n. Il en découle

    (2nn)p𝒫;p2npln(2n)ln(p)

    car toutes les puissances de nombres premiers intervenant dans la décomposition de (2nn) divisent p𝒫;p2npln(2n)ln(p).
    Notons qu’en fait ce produit désigne

    ppcm(1,2,,2n).
  • (c)

    On a

    (2nn)p𝒫;p2npln(2n)ln(p)p𝒫;p2npln(2n)ln(p)p𝒫;p2n(2n)=(2n)π(2n).
  • (d)

    En passant au logarithme:

    k=12nln(k)-2k=1nln(k)π(2n)ln(2n).

    À l’aide d’une comparaison intégrale on obtient

    1nln(t)dtk=1nln(k)1(n+1)ln(t)dt

    donc

    nln(n)-n+1k=1nln(k)(n+1)ln(n+1)-n

    donc

    k=1nln(k)=n+nln(n)-n+O(ln(n)).

    Par suite,

    k=12nln(k)-2k=1nln(k)=n+2nln(2n)-2n-2(nln(n)-n)+O(ln(n))

    puis

    k=12nln(k)-2k=1nln(k)n+ln(2)(2n).

    On en déduit

    2nln(2n)=n+O(π(2n)).

    Ajoutons

    xln(x)n+2x/2ln(2x/2)

    par calculs et π(x)π(2x/2) car π(x) et π(2x/2) ne différent qu’au plus d’une unité et π(x)+.
    Finalement, une certaine satisfaction.

 
Exercice 5  6155      CENTRALE (MP)Correction  

Dans cet exercice, on note 𝒫 (respectivement 𝒫n) l’ensemble des nombres premiers (respectivement, des nombres premiers inférieurs ou égaux à n).

Pour p𝒫 et n*, on note vp(n) l’exposant de p dans la décomposition de n en facteurs premiers.

  • (a)

    Écrire une fonction python premiers(n) renvoyant une liste de taille n+1 telle que premier(n)[k] vaut 1 si k est premier et 0 sinon.

  • (b)

    Figurer les fonctions np𝒫nln(p)p, nln(n)ln(4)1 et nln(n)+ln(4). Formuler une conjecture.

  • (c)

    On fixe dans cette question un nombre premier p et un entier n1. Montrer que, pour tout k,

    Card{m1;n|vp(m)=k}=npknpk+1.

    En déduire que

    vp(n!)=k=1+npk

    puis que

    np1vp(n!)np1.
  • (d)

    Proposer un encadrement de ln(n!).

  • (e)

    Montrer que pour tout entier n2, il existe θn[0;1] tel que

    ln(n!)=nln(n)n+1+θnln(n).
  • (f)

    Établir que p𝒫np4n pour tout n* et conclure quant à la conjecture énoncée précédemment.

Solution

  • (a)

    Par le crible d’Ératosthène,

    def premiers(n):
        L = [0 for _ in range(n+1)]
        if n >= 2:
            L[2:] = [1]*(n-1)
        for p in range(2, int(n**0.5)+1):
            if L[p] == 1:
                for k in range(p*p, n+1, p):
                    L[k] = 0
        return L
    
  • (b)

    On obtient les tracés par le code suivant:

    import matplotlib.pyplot as plt
    N = 100
    P = np.array(premiers(N))
    n = np.array([1] + list(range(1, N+1)))
    P = P * np.log(n)/n
    
    plt.plot(n, np.log(n) - np.log(4) - 1)
    plt.plot(n, np.cumsum(P))
    plt.plot(n, np.log(n) + np.log(4))
    plt.show()
    

    Ces tracés suggèrent l’encadrement

    ln(n)ln(4)1p𝒫nln(p)pln(n)+ln(4).
  • (c)

    Soit k. Les entiers m1;n tels que vp(m)=k sont ceux divisibles par pk mais pas par pk+1. Pour q* donné, le nombre d’entiers m1;n divisisible par q est exactement n/q et donc

    Card{m1;n|vp(m)=k}=npknpk+1.

    La propriété vp(mm)=vp(m)+vp(m) pour m,m* donne

    vp(n!)=m=1nvp(m).

    On réorganise le calcul de la somme selon de la valeur k de vp(m)

    vp(n!)=k=1+1mnvp(m)=kk=k=1+k(npknpk+1).

    Les termes sommés sont nuls à partir d’un certain rang, on peut séparer la somme en deux et conclure à l’aide d’un glissement d’indice

    vp(n!)=k=1+knpkk=1+knpk+1=k=1+knpkk=2+(k1)npk=k=1+npk.

    Sachant x1xx, on obtient l’encadrement

    np1npk=1+npkk=1+npk=np1

    donc

    np1vp(n!)np1.
  • (d)

    Puisque

    n!=p𝒫npvp(n!)

    on a

    ln(n!)=p𝒫nvp(n!)ln(p).

    En utilisant les encadrements précédents

    p𝒫n(np1)ln(p)ln(n!)p𝒫nnp1ln(p).
  • (e)

    La fonction tln(t) est continue par morceaux et croissante sur [1;+[. Par comparaison série-intégrale,

    1nln(t)dtk=2nln(k)=k=1n1ln(k)+ln(n)1nln(t)dt+ln(n).

    On en déduit

    nln(n)n+1ln(n!)nln(n)n+1+ln(n)

    puis l’existence θn[0;1] tel que

    ln(n!)=nln(n)n+1+θnln(n).
  • (f)

    On établit p𝒫np4n en raisonnant par récurrence forte sur n*.

    Pour n=1 et n=2, c’est immédiat.

    Supposons la propriété vérifiée jusqu’au rang n2.

    Si n+1 n’est pas un nombre premier, alors

    p𝒫n+1p=p𝒫np4n.

    Si n+1 est un nombre premier, nécessairement impair, on écrit n+1=2m+1.

    Les nombres premiers compris entre m+2 et 2m+1 divisent tous (2m+1m) et l’on a

    (2m+1m)=12[(2m+1m)+(2m+1m+1)]12(1+1)2m+1=4m.

    Par l’hypothèse de récurrence,

    p𝒫n+1p=p𝒫m+1pp𝒫n+1𝒫m+14m+14m=4n+1.

    La récurrence est établie.

    L’inégalité

    p𝒫n(np1)ln(p)ln(n!)

    donne

    p𝒫nln(p)p1nln(n!)+1np𝒫nln(p).

    D’une part,

    1nln(n!)1nln(nn)=ln(n).

    D’autre part,

    p𝒫nln(p)=ln(p𝒫np)ln(4n)=nln(4).

    On a donc

    p𝒫nln(p)pln(n)+ln(4).

    L’inégalité

    ln(n!)p𝒫nnln(p)p1

    donne

    p𝒫nln(p)p1nln(n!)p𝒫nln(p)p(p1).

    D’une part,

    1nln(n!)ln(n)1+1nln(n)1.

    D’autre part,

    p𝒫nln(p)p(p1)p𝒫nln(p)=ln(p𝒫np)ln(4n)=nln(4).

    On obtient donc

    p𝒫nln(p)pln(n)ln(4)1.
 
Exercice 6  5689   Correction  

Soit n*. Si n=εpεp-1ε0¯ est l’espression de n en base 2 on note

s(n)=ε0++εpetv(n) la valuation de n en base 2
  • (a)

    Écrire une fonction calculant v(n) et s(n).

  • (b)

    Si n{2,,104}, vérifier numériquement que v(n)=s(n-1)-s(n)+1.

  • (c)

    Prouver que pour tout n2, v(n)=s(n-1)-s(n)+1.

  • (d)

    Calculer v(n!) en fonction de n et s(n).

  • (e)

    Soit n*. Montrer que n est une puissance de 2 si, et seulement si, (nk) est un entier pair pour tout k=1,,n-1.

Solution

  • (a)

    Tant qu’une puissance de 2 divise n, on passe à la puissance suivante:

    def v(n):
        k = 0
        p = 1
        while n % (2*p) == 0:
            k = k + 1
            p = 2 * p
        return k
    

    Pour calculer s(n), une solution récursive est possible:

    def s(n):
        if n == 0:
            return 0
        elif n % 2 == 0:
            return s(n//2)
        else:
            return 1 + s((n-1) // 2)
    
  • (b)

    On vérifie qu’aucune valeur n’échoue

    for n in range(2, 10**4+1):
        if v(n) != s(n-1) - s(n) + 1:
            print(f"Echec pour la valeur {n}")
    
  • (c)

    Posons p la valuation de n en base 2. L’écriture en base 2 de n se termine par 100¯ avec un nombre de zéro égal à p. L’écriture de n-1 commence par les mêmes chiffres mais se termine par 011¯. On en déduit s(n-1)-s(n)=p-1=v(n)-1.

  • (d)

    Pour p,q*, v(pq)=v(p)+v(q) donc

    v(n!)=k=1nv(k)=v(1)+k=2n(s(k-1)-s(k)+1)=n-s(n)
  • (e)

    Cas: n=1 ou n=2. C’est immédiat.

    Cas: n3. Soit k{1,,n-1}. On remarque

    v((nk))=v(n!)-v(k!)-v((n-k)!)=s(k)+s(n-k)-s(n)

    Si n vaut 2p, son écriture en base de 2 est de la forme 100¯ avec p chiffres 0. Pour k{1,,n-1}, les chiffres de l’écriture en base 2 de n-k sont les «  inverses  » des chiffres en base de 2 de k puisque k+(n-k)=n. En particulier, s(k)+s(n-k)=p. On a donc s(k)+s(n-k)-s(n)=p-1>0. Le coefficient binomial (nk) est pair.

    Si n n’est pas une puissance de 2, on peut écrire avec n=εpεq+1100¯. Considérons alors k=2q. On a s(k)=1 et s(n-k)=εp++εq+1 donc s(k)+s(n-k)=s(n). Par conséquent, la valuation en base 2 du coefficient binomial (nk) est nulle: c’est entier est impair.

[<] Études arithmétiques [>] Petit théorème de Fermat



Édité le 06-05-2026

Bootstrap Bootstrap 3 - LaTeXML [LOGO] - Powered by MathJax Powered by MathJax