问题描述
一个直角三角形的三边可以都为整数,直角三角形三条边组成的数组称为毕达哥拉斯三元组。这三边必须满足的关系是:两直角边的平方和等于斜边的平方。请找出所有边长不大于500的毕达哥拉斯三元组(直角边1, 直角边2, 斜边)。
用三重嵌套的for语句试出所有可能的毕达哥拉斯三元组。这是一个“蛮力”(brute-force)计算的例子。
输入形式:无输入。
输出形式:每行输出一个三元组(直角边1, 直角边2, 斜边),按直角边1由小到大的顺序输出,若直角边1相等,按直角边2由小到大的顺序输出。
最后一行输出三元组的总数,格式见样例。
样例输入:(无)
样例输出:
3 4 5
4 3 5
5 12 13
6 8 10
7 24 25
8 6 10
8 15 17
9 12 15
9 40 41
10 24 26
……
A total of 772 triples were found.
案例代码
#include <stdio.h>
int main() {
int count = 0;
for (int a = 1; a <= 500; a++) {
for (int b = a; b <= 500; b++) {
for (int c = b; c <= 500; c++) {
if (a * a + b * b == c * c) {
printf("%d %d %d\n", a, b, c);
count++;
// 考虑直角边互换的情况
if (a != b) {
printf("%d %d %d\n", b, a, c);
count++;
}
}
}
}
}
printf("A total of %d triples were found.\n", count);
return 0;
}
这段代码使用三重嵌套的循环来遍历所有可能的直角边,并检查是否满足毕达哥拉斯定理。如果满足条件,就将三个边长输出,并递增计数器count。最后输出找到的三元组总数。
运行截图
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END