Algorithmes courants

Quelques algorithmes rencontrés fréquemment

Liste des diviseurs d'un nombre

# Liste des diviseurs d'un nombre entier
def liste_diviseurs(nombre):
    liste = []
    for diviseur in range(1,nombre+1):
        if nombre % diviseur == 0:
            liste.append(diviseur)
    return liste

Déterminer si un nombre est premier ou pas

Afficher la liste des n premiers nombres premiers

# Déterminer si un nombre est premier
def est_premier(nombre):
    for diviseur in range (2,nombre):
        if nombre % diviseur == 0:
            return False
    return True

# Liste des nombres premiers dans un intervalle
def liste_nombres_premiers(min, max):
    liste = []
    for i in range(min, max+1):
        if est_premier(i):
            liste.append(i)
    return liste

Recherche du minimum et du maximum dans une liste

# Recherche du maxmimum dans une liste
# NOTE : on peut aussi utiliser la fonction min(liste)
def minimum_liste (liste):
    minimum = liste[0]
    for element in liste:
        if element < minimum:
            minimum = element
    return minimum

# Recherche du maximum dans une liste
# NOTE : on peut aussi utiliser la fonction max(liste)
def maximum_liste(liste):
    maximum = liste[0]
    for element in liste:
        if element > maximum:
            maximum = element
    return maximum

Echange de deux valeurs

# Echanger deux variables
# plus simple dans une liste, on utilisera : liste[i], liste[i+1] = liste[i+1], liste[i]

def echange(valeur1, valeur2):
    tmp = valeur1
    valeur1 = valeur2
    valeur2 = tmp
    return (valeur1,valeur2)

Suite de Fibonacci

# La suite de Fibonacci se détermine de la façon suivante :
# u0 = 1  u1 = 1  u2 = u0 + u1  u3 = u2 + u1 ...
#                 le terme suivant est la somme des deux termes précédents

def suite_fibonacci(n):
    suite = []
    u0 = 0
    u1 = 1
    suite.append(u0)
    suite.append(u1)
    for i in range(n):
        terme_suivant = u0 + u1
        suite.append(terme_suivant)
        u0 = u1
        u1 = terme_suivant
    return suite

Calcul d'une factorielle

# Méthode 1
def factorielle(nombre):
    result = 1
    if nombre == 0 or nombre == 1:
        return 1
    else:
        for i in range(nombre, 1, -1):
            result = result * i
        return result

# Méthode 2 : de façon récursive
def factorielle_recursive(nombre):
    if nombre == 0 or nombre == 1:
        return 1
    else:
        return nombre * factorielle_recursive(nombre-1)

Parmi les algorithmes souvent rencontrés dans les exercices, on retrouve aussi les algorithmes de tri. A voir dans une rubrique dédiée plus loin...