Bộ ba Pythagoras là ba số nguyên dương a, b, c thoả mãn a² + b² = c². Chương trình dưới đây tìm tất cả các bộ ba với c ≤ giới hạn cho trước.
Ví dụ
def pythagorean_triplets(limit):
c, m = 0, 2
while c < limit:
for n in range(1, m):
a = m * m - n * n
b = 2 * m * n
c = m * m + n * n
if c > limit:
break
print(a, b, c)
m += 1
upper = 15
print("Giới hạn trên:", upper)
print("Các bộ ba Pythagoras:")
pythagorean_triplets(upper)
Kết quả
Giới hạn trên: 15 Các bộ ba Pythagoras: 3 4 5 8 6 10 5 12 13
Giải thích
- Sử dụng công thức Euclid: a = m² - n², b = 2mn, c = m² + n² với m > n > 0.
- Vòng lặp ngoài tăng m, vòng lặp trong duyệt n từ 1 đến m-1.
- Nếu c vượt quá giới hạn thì dừng vòng lặp trong.
- In ra các bộ ba tìm được.