Théorie des nombres en Python avec sympy.ntheory

1. A propos de la bibliothèque sympy.ntheory

Sympy.ntheory est une sous-bibliothèque de SymPy, ayant pour principal but de fournir des outils pour aborder la théorie des nombres, une branche des mathématiques pures qui étudie les propriétés des entiers et des nombres en général. la bibliothèque sympy.ntheory fournie un nombre important de packages dotés des fonctions permettant d'analyser, de manipuler et de résoudre des problèmes liés aux nombres premiers, les propriétés des congruences et les fonctions modulaires... Sympy.ntheory constitue une excellente ressource pour les étudiants et les chercheurs, car elle leur permet de résoudre facilement des problèmes classiques de théorie des nombres, grâce à une interface conviviale en Python.
L'une des fonctions les plus intéressantes de sympy.ntheory est la réalisation de tests de primalité probabilistes et déterministes, vous pouvez ainsi récupérer des nombres premiers, vérifier si un nombre particulier est premier ou non, et même décomposer un entier en facteurs premiers. Par conséquent, sympy.ntheory est un excellent outil pour les applications en cryptographie qui nécessitent des nombres premiers comme cœur de tous les calculs.
En outre, la bibliothèque contient des algorithmes efficaces dédiés à des tâches plus spécifiques, comme la recherche de racines modulaires, la décomposition d'entiers en puissances, ou le calcul sur des résidus quadratiques. Elle peut également intervenir pour manipuler des objets plus abstraits comme les classes de restes, les groupes multiplicatifs modulo n, ou certains objets algébriques utilisés en cryptographie.
Enfin, sympy.ntheory s'intègrent dans le reste des modules de SymPy, offrant une approche unifiée du calcul symbolique, numérique, et algébrique.

2. Liste des fonctionnalités offertes par sympy.ntheory

La bibliothèque sympy.ntheory est un outil très riche en fonctionalités liées à la théorie des nombres. En voici une liste de fonctionalités liées à cette bibliothèque:

  1. Tests de primalité : Détection des nombres premiers (test déterministe ou probabiliste), Tests comme isprime, nextprime, prevprime
  2. Génération de nombres premiers : Génération du nième nombre premier, génération jusqu’à une borne, produit des premiers dans un intervalle
  3. Factorisation : Décomposition en facteurs premiers, méthodes de factorisation diverses (division, Pollard, etc.)
  4. Comptage de nombres premiers : Fonction π(n), approximation de la densité des nombres premiers
  5. Diviseurs : Liste des diviseurs, nombre de diviseurs, somme des diviseurs
  6. Fonctions arithmétiques : Fonction de Möbius (μ), fonction indicatrice d’Euler (φ), fonction de Liouville, fonction de Mangoldt
  7. PGCD et PPCM : Calcul du pgcd, ppcm, algorithme d’Euclide étendu
  8. Fonctions multiplicatives : Vérification de multiplicativité, produit de Dirichlet
  9. Congruences : Résolution d’équations de congruences, théorème des restes chinois, systèmes congruentiels
  10. Calculs modulaires : Inverse modulaire, racines modulaires, groupes multiplicatifs modulo n.
  11. Équations diophantiennes : Résolution d’équations entières linéaires, représentation d’un entier comme combinaison
  12. Nombres particuliers : Détection/génération de nombres parfaits, puissants, amicaux, de Mersenne, de Fermat
  13. Fonctions analytiques : Fonctions asymptotiques, densité des entiers premiers, convolutions arithmétiques
  14. Algorithmes : Algorithmes de base en arithmétique (gcd, inverses, factorisation, racines modulaires)
  15. Utilitaires divers : Conversion entre bases, manipulation de grands entiers, outils pour l’arithmétique modulaire




3. Exemples d'usages de la bibliothèque sympy.ntheory

Nous donnons dans ce paragraphe une liste d'exemples illustrant les proporiétés citées dans le paragraphe précédant classés par fonctionnalité.

3.1 Tests de primalité

Exemple

3.2 Factorisation

Exemple

3.3 Génération et comptage des nombres premiers

Exemple (Génération des nombres premiers)

Exemple 4 (Comptage de nombres premiers)

3.4 Diviseurs d'un entier

Exemple

3.5 Fonctions arithmétiques

Exemple

3.5 Calcul du PGCD et PPCM

Exemple

3.6 Congruences

Exemple (congruence modulo n)

Exemple (Calculs modulaires)

3.7 Équations diophantiennes

Exemple

3.8 Nombres particuliers

3.9 Fonctions analytiques

4. La théorie des nombres avec sympy.ntheory : guide complet

La bibliothèque sympy.ntheory offre un large éventail de fonctionnalités pour travailler avec les nombres entiers, les diviseurs, les nombres premiers, les congruences, voir toute la théorie des nombres etc.

Voici une vue d’ensemble structurée de toutes les principales fonctionnalités offertes par sympy.ntheory, regroupées par catégories:

4.1 Nombres premiers

Tests de primalité :

  1. isprime(n) : teste si n est premier.
  2. nextprime(n) : donne le prochain nombre premier strictement supérieur à n.
  3. prevprime(n) : donne le plus grand nombre premier strictement inférieur à n.
  4. prime(n) : renvoie le n-ième nombre premier.
  5. primerange(a, b) : génère les nombres premiers entre a et b.
  6. randprime(a, b) : renvoie un nombre premier aléatoire entre a et b.
  7. primepi(n) : compte le nombre de nombres premiers ≤ n.
  8. primorial(n) : produit des n premiers nombres premiers.

4.2 Diviseurs et facteurs

Décomposition en facteurs premiers :

  1. factorint(n) : renvoie un dictionnaire {facteur premier : exposant}.
  2. divisors(n) : renvoie tous les diviseurs positifs de n.
  3. proper_divisors(n) : renvoie tous les diviseurs propres de n.

Fonctions arithmétiques classiques :

  1. totient(n) : fonction d’Euler φ(n).
  2. mobius(n) : fonction de Möbius μ(n).
  3. divisor_sigma(n, k) : somme des puissances k-ièmes des diviseurs de n.
  4. core(n) : partie sans carré de n.
  5. smoothness(n) : renvoie la plus grande base de facteur premier de n.

4.3 Congruences et résidus

  1. is_quad_residue(a, p) : vérifie si a est un résidu quadratique modulo p.
  2. legendre_symbol(a, p) : symbole de Legendre.
  3. jacobi_symbol(a, n) : symbole de Jacobi.
  4. kronecker_symbol(a, n) : symbole de Kronecker.
  5. solve_congruence(*congruences) : résout des systèmes de congruences de type chinois.
  6. crt(moduli, residues) : théorème des restes chinois.

4.4 Fonctions multiplicatives

  1. is_multiplicative(f) : teste si une fonction est multiplicative.
  2. multiplicative_order(a, n) : ordre multiplicatif de a modulo n.
  3. is_primitive_root(a, n) : teste si a est une racine primitive modulo n.
  4. primitive_root(n) : renvoie une racine primitive modulo n.
  5. nthroot_mod(a, n, m) : racine n-ième de a modulo m.

4.5 Algorithmes divers

  1. gcd(a, b) : plus grand commun diviseur.
  2. lcm(a, b) : plus petit commun multiple.
  3. igcdex(a, b) : algorithme d’Euclide étendu : donne le triplet (g, x, y) tel que a*x + b*y = g = gcd(a, b).
  4. mod_inverse(a, m) : inverse modulaire de a modulo m.

4.6 Nombres particuliers

  1. is_perfect(n) : teste si un nombre est parfait.
  2. is_abundant(n) : nombre abondant.
  3. is_deficient(n) : nombre déficient.
  4. is_square(n) : teste si n est un carré parfait.
  5. is_power(n) : teste si n = a^b.

4.7 Fonctions avancées / autres

  1. continued_fraction_periodic(a, b, c) : fractions continues périodiques.
  2. digits(n, b=10) : renvoie les chiffres de n en base b.
  3. frobenius_number(...) : nombre de Frobenius.
  4. multinomial_coefficients(n) : coefficients multinomiaux.

4.8 Générateurs aléatoires

  1. generate(n) : génère les n premiers nombres premiers (sous forme de liste).
  2. randprime(a, b) : génère un nombre premier aléatoire dans un intervalle.

Exemple d’utilisation:

Pour explorer toutes les fonctionnalités:

On peux voir la liste complète des objets définis dans sympy.ntheory avec:

Explorer les sous-modules plus spécialisés:

5. Documentation officielle de sympy.ntheory

La documentation officielle du module sympy.ntheory est disponible sur le site de SymPy:

Documentation officielle de sympy.ntheory

Cette page fournit une description complète des fonctionnalités offertes par le module sympy.ntheory, y compris des exemples d'utilisation, des explications détaillées et des références mathématiques.​

 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply