Adloun

Python (école d'ingénieur) · Chapitre 5 · Exercice

Dictionnaire de triplets pythagoriciens

Listes, tuples et dictionnaires

Énoncé

Générer tous les triplets pythagoriciens avec , et les stocker dans un dictionnaire où la clé est la somme et la valeur est la liste des triplets ayant cette somme.

Corrigé

Voici le code Python corrigé pour calculer correctement la somme des carrés :

def triplets_pythagoriciens(N):
    """
    Génère tous les triplets pythagoriciens avec c <= N.
    Retourne un dictionnaire {somme: [(a,b,c), ...]}.
    """
    triplets = {}

    for a in range(1, N):
        for b in range(a + 1, N):
            c2 = a**2 + b**2
            c = int(c2 ** 0.5)
            if c <= N and c*c == c2 and b < c:
                somme = a + b + c
                if somme not in triplets:
                    triplets[somme] = []
                triplets[somme].append((a, b, c))

    return triplets

def afficher_resultats(triplets):
    """Affiche les triplets regroupés par somme."""
    for somme in sorted(triplets.keys()):
        print(f"Somme = {somme} : {triplets[somme]}")

# Génération pour N = 50
resultats = triplets_pythagoriciens(50)
afficher_resultats(resultats)

print(f"\nNombre total de triplets : {sum(len(v) for v in resultats.values())}")
print(f"Sommes possibles : {sorted(resultats.keys())}")

Affichage partiel obtenu :

Somme = 12 : [(3, 4, 5)]
Somme = 24 : [(6, 8, 10)]
Somme = 30 : [(5, 12, 13)]
Somme = 36 : [(9, 12, 15)]
Somme = 40 : [(8, 15, 17)]
Somme = 42 : [(7, 24, 25)]
Somme = 48 : [(12, 16, 20)]
Somme = 56 : [(10, 24, 26)]
Somme = 60 : [(15, 20, 25), (10, 24, 26)]
...

Note : Le triplet a pour somme . Puisque , il s'agit d'un triplet pythagoricien valide (multiple de ). Il est donc normal qu'il apparaisse à côté de pour la somme .

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →