作为课堂作业,我将编写一个 C 程序来生成所有低于给定值 't' 的毕达哥拉斯三元组。这是我的代码,它首先使用欧几里得公式生成一个原始三元组 (a, b, c) ,然后打印所有形式为 (ka, kb, kc) 的三元组,用于 1 < kc < t。
for (i = 2; i < (sqrt(t) + 1); i++)
for (j = 1; j < i; j++)
if ((gcd(i,j) == 1) && ((i-j) % 2) && ((i*i + j*j) < t))
{
k = 0;
a = i * i - j * j;
b = 2 * i * j;
c = i * i + j * j;
while ((++k) * c < t)
printf("(%d, %d, %d)\n", k*a, k*b, k*c);
}
我遇到的大多数其他算法都使用嵌套循环来检查平方和,并且随着 t 的增长比这慢得多。是否可以推断出它确实更快的证据?