【发布时间】:2014-06-10 12:25:55
【问题描述】:
我正在尝试编写一个程序,它为给定范围 N 打印毕达哥拉斯三元组 (a^2 + b^2 = c^2),其中 a
#include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0, N, T,c2;
scanf("%d", &T);
while(T--)
{
int counter = 0;
scanf("%d", &N);
{
for (c = 0; c <=N; c++)
{
for (b = 0; b < c; b++)
{
for (a = 0; a < b; a++)
{
c2 = c*c;
if (a*a + b*b == c2 )
//if(sqrt (pow(a,2) + pow(b,2)) == c)
{
++counter;
printf("\n %d , %d, %d \n",a,b,c); }
}
}
}
}
printf("%d\n", counter);
}
return 0;
}
这适用于 N
【问题讨论】:
-
a) 这是 Stackoverflow 的问题。 b) 欧拉计划?
-
...或者最好不要这样做,因为它也可以在那里关闭。
-
@deviantfan.. 为什么会在 S/O 上关闭?只是好奇......这似乎是一个合法的编程问题,除非我真的很愚蠢并且错过了一些东西
-
一旦
a、b、c中的2个固定,最后一个可以不循环直接计算。 (所以在你的情况下a*a = c*c - b*b)