Pythagorean三元组是指满足勾股定理(a^2 + b^2 = c^2)的三个正整数(a,b,c)。下面是一个C程序,用于找到给定范围内的所有Pythagorean三元组,并输出结果。
#include <stdio.h>
int main() {
int a, b, c, limit;
printf("请输入一个正整数作为上限:");
scanf("%d", &limit);
printf("在范围[1, %d]内的Pythagorean三元组为:\n", limit);
for (a = 1; a <= limit; a++) {
for (b = a; b <= limit; b++) {
for (c = b; c <= limit; c++) {
if (a * a + b * b == c * c) {
printf("(%d, %d, %d)\n", a, b, c);
}
}
}
}
return 0;
}
然而,该程序存在一个错误,导致输出结果不正确。问题出在第二个循环中,应该将b
的初始值设为a + 1
,而不是a
。这是因为在满足勾股定理的三元组中,a
的值必须小于b
的值。
修正后的程序如下:
#include <stdio.h>
int main() {
int a, b, c, limit;
printf("请输入一个正整数作为上限:");
scanf("%d", &limit);
printf("在范围[1, %d]内的Pythagorean三元组为:\n", limit);
for (a = 1; a <= limit; a++) {
for (b = a + 1; b <= limit; b++) {
for (c = b; c <= limit; c++) {
if (a * a + b * b == c * c) {
printf("(%d, %d, %d)\n", a, b, c);
}
}
}
}
return 0;
}
修正后的程序会正确输出在给定范围内的所有Pythagorean三元组。
领取专属 10元无门槛券
手把手带您无忧上云