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
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.