📅  最后修改于: 2023-12-03 14:50:46.133000             🧑  作者: Mango
问题描述:如果 $a, b$ 和 $c$ 满足条件 $a^2 + b^2 = c^2$,其中 $a, b, c$ 是自然数,那么这被称为“勾股定理”。请编写一个程序,找到 $1 \leqslant a, b, c \leqslant 100$ 的所有勾股数元组 $(a, b, c)$。
我们可以使用三重循环枚举所有 $a, b, c$ 的值,并检查它们是否符合勾股定理。如果是,则将其打印出来。
本题的程序实现比较简单,我们只需要嵌套三个循环即可。以下是Python实现代码片段:
for a in range(1, 101):
for b in range(a, 101):
for c in range(b, 101):
if a ** 2 + b ** 2 == c ** 2:
print(f"({a}, {b}, {c})")
以上代码使用了Python的格式化字符串,将满足勾股定理的数元组打印出来。根据勾股定理的定义,我们只需要在循环中判断 $a^2+b^2$ 是否等于 $c^2$,如果是,则将它打印出来即可。
以上代码实现了 ISRO CS 2008
问题 29 的解法,通过三重循环枚举所有可能的符合勾股定理的自然数,如果满足勾股定理,则将其打印出来。其中,循环变量 a
从 1 开始循环,变量 b
从 a
开始循环,变量 c
从 b
开始循环,避免了无实际意义的重复情况。此外,打印时使用了格式化字符串,将自然数元组按照要求格式输出。