Table des matières
Ceci est une ancienne révision du document !
Algorithmes sur entiers
Cette page reprend quelques grands algorithmes classiques sur les nombres entiers, et introduit quelques algorithmes ayant des applications en chimie.
Recherche du PGCD (plus grand commun diviseur)
Explication géométrique : en comprenant un nombre entier comme une longueur et un couple d'entiers (a,b) comme un rectangle, leur PGCD est la longueur du côté du plus grand carré permettant de carreler entièrement ce rectangle. L'algorithme d'Euclide décompose ce rectangle en carrés, de plus en plus petits, par divisions euclidiennes successives, de la longueur par la largeur, puis de la largeur par le reste, jusqu'à un reste nul (observez bien ici !). Cela donne ceci en Python : <sxh python; title : gcd.py> #!/usr/bin/env python # -*- coding: UTF-8 -*- def gcd(a, b):
"""Calculate the Greatest Common Divisor of a and b.
Unless b==0, the result will have the same sign as b (so that when b is divided by it, the result comes out positive). """ while b: a, b = b, a%b return a
n1=210 n2=126 print gcd(n1, n2) </sxh>
Si on dispose des décompositions en facteurs premiers d'un nombre entier, on peut aussi établir la valeur du PGCD en effectuant le produit de tous les facteurs communs.
Références
- https://docs.python.org/dev/library/fractions.html#fractions.gcd (version incluse dans le langage)
- http://en.literateprograms.org/Euclidean_algorithm_%28Python%29 (améliorable !)
Recherche du PPCM
Nombres premiers
Factorisation en nombres premiers
Problème des apéritifs
Problème du sac à dos
Applications chimiques
- formules CHON
- protéines
- spectro de masse ?