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:
- Tests de primalité : Détection des nombres premiers (test déterministe ou probabiliste), Tests comme isprime, nextprime, prevprime
- 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
- Factorisation : Décomposition en facteurs premiers, méthodes de factorisation diverses (division, Pollard, etc.)
- Comptage de nombres premiers : Fonction π(n), approximation de la densité des nombres premiers
- Diviseurs : Liste des diviseurs, nombre de diviseurs, somme des diviseurs
- Fonctions arithmétiques : Fonction de Möbius (μ), fonction indicatrice d’Euler (φ), fonction de Liouville, fonction de Mangoldt
- PGCD et PPCM : Calcul du pgcd, ppcm, algorithme d’Euclide étendu
- Fonctions multiplicatives : Vérification de multiplicativité, produit de Dirichlet
- Congruences : Résolution d’équations de congruences, théorème des restes chinois, systèmes congruentiels
- Calculs modulaires : Inverse modulaire, racines modulaires, groupes multiplicatifs modulo n.
- Équations diophantiennes : Résolution d’équations entières linéaires, représentation d’un entier comme combinaison
- Nombres particuliers : Détection/génération de nombres parfaits, puissants, amicaux, de Mersenne, de Fermat
- Fonctions analytiques : Fonctions asymptotiques, densité des entiers premiers, convolutions arithmétiques
- Algorithmes : Algorithmes de base en arithmétique (gcd, inverses, factorisation, racines modulaires)
- 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
1 2 3 4 5 |
from sympy import isprime, nextprime, prevprime isprime(11) # True nextprime(23) # 29 prevprime(37) # 31 |
3.2 Factorisation
Exemple
1 2 3 4 5 |
from sympy import factorint factorint(126) # {2: 1, 3: 2, 7: 1} factorint(2310) # {2: 1, 3: 1, 5: 1, 7: 1, 11: 1} factorint(900) # {2: 2, 3: 2, 5: 2} |
3.3 Génération et comptage des nombres premiers
Exemple (Génération des nombres premiers)
1 2 3 4 5 |
from sympy import primerange, prime, primorial list(primerange(1, 49)) # [2, 3, 5, 7, 11, ..., 47] prime(25) # 97 (25ème nombre premier) primorial(7, nth=True) # Produit des 7 premiers nombres premiers : 510510 |
Exemple 4 (Comptage de nombres premiers)
1 2 3 |
from sympy import primepi primepi(1000) # 168 |
3.4 Diviseurs d'un entier
Exemple
1 2 3 4 5 |
from sympy import divisors, divisor_count, divisor_sigma divisors(60) # [1, 2, 3, 4, ..., 60] divisor_count(72) # 12 divisor_sigma(1, 90) # Somme des diviseurs : 234 |
3.5 Fonctions arithmétiques
Exemple
1 2 3 4 5 |
from sympy.ntheory import mobius, totient, liouville, mangoldt, divisor_sigma mobius(30) # 1 totient(100) # 40 divisor_sigma(3, 28) # 21532 |
3.5 Calcul du PGCD et PPCM
Exemple
1 2 3 4 5 |
from sympy import gcd, lcm, igcdex gcd(105, 252) # 21 lcm(12, 15) # 60 igcdex(56, 15) # (11, -41, 1) → Bézout : 56*11 + 15*(-41) = 1 |
3.6 Congruences
Exemple (congruence modulo n)
1 2 3 4 |
from sympy.ntheory.modular import solve_congruence solve_congruence((4, 7),) # (18, 7) solve_congruence((2, 3), (3, 5), (2, 7)) # (23, 105) |
Exemple (Calculs modulaires)
1 2 3 4 5 |
from sympy import mod_inverse, sqrt_mod, multiplicative_order mod_inverse(7, 26) # 15 sqrt_mod(9, 13, all_roots=True) # [3, 10] multiplicative_order(2, 17) # 8 |
3.7 Équations diophantiennes
Exemple
1 2 3 4 |
from sympy.solvers.diophantine import diophantine from sympy.abc import x, y diophantine(12*x + 35*y - 1) # {(3 + 35*t, -1 - 12*t)} |
3.8 Nombres particuliers
1 2 3 4 5 6 |
from sympy.ntheory import is_perfect, is_power, mersenne_prime_exponent, is_fermat_prime is_perfect(496) # True is_power(81) # (3, 4) → 81 = 3⁴ [mersenne_prime_exponent(i) for i in range(1, 6)] # [2, 3, 5, 7, 13] is_fermat_prime(65537) # True |
3.9 Fonctions analytiques
1 2 3 4 5 |
from sympy import primepi from sympy.ntheory import mangoldt primepi(10**5) # 9592 mangoldt(16) # log(2) |
4. 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