#include<stdio.h>
#include<math.h>
int main()
{
int m, n, t, k, h, f, a, b, d, e, x, y, z, i;
printf("请输入上限值m:");
scanf("%d", &m);
printf("m以内的勾股数组有:\n");
n = 0;
for (a = 2; a <= sqrt(m); a++)
{
for (b = 1; b <= a - 1; b++)
{
t = 0;
if (((int)((a + b) / 2.0)) == (a + b) / 2.0)
{
b++;
}
for (k = 2; k <= b; k++)
{
if ((((float)b / k) == b / k) && ((float)a / k) == a / k)
{
t = 1;
}
}
if (t == 0)
{
k = a * a;
h = b * b;
d = k - h;
e = 2 * a * b;
f = k + h;
if (f > m)
{
break;
}
for (i = 1; i <= m / f; i++)
{
x = i * d;
y = i * e;
z = i * f;
printf("(%d %d %d)\t", x, y, z);
n++;
if ((float)n / 3 == n / 3)
{
printf("\n");
}
}
}
}
}
printf("\n共%d组勾股数.", n);
return 0;
}
#include<math.h>
int main()
{
int m, n, t, k, h, f, a, b, d, e, x, y, z, i;
printf("请输入上限值m:");
scanf("%d", &m);
printf("m以内的勾股数组有:\n");
n = 0;
for (a = 2; a <= sqrt(m); a++)
{
for (b = 1; b <= a - 1; b++)
{
t = 0;
if (((int)((a + b) / 2.0)) == (a + b) / 2.0)
{
b++;
}
for (k = 2; k <= b; k++)
{
if ((((float)b / k) == b / k) && ((float)a / k) == a / k)
{
t = 1;
}
}
if (t == 0)
{
k = a * a;
h = b * b;
d = k - h;
e = 2 * a * b;
f = k + h;
if (f > m)
{
break;
}
for (i = 1; i <= m / f; i++)
{
x = i * d;
y = i * e;
z = i * f;
printf("(%d %d %d)\t", x, y, z);
n++;
if ((float)n / 3 == n / 3)
{
printf("\n");
}
}
}
}
}
printf("\n共%d组勾股数.", n);
return 0;
}