c++ - 使用欧几里得公式查找所有毕达哥拉斯三元组

标签 c++ pythagorean

此程序的目标是使用欧几里德公式 (a = m^2 -n^2, b = 2mn, c = m^2) 为小于 500 的每个值 (a, b, c) 找到所有勾股三元组+ n^2.) 所以这是我的代码。

int main()
{
    clock_t start = clock()/ (CLOCKS_PER_SEC/1000);

    for (int m = 1; m <= 500; m++)
    {

        for (int n = 1; n <= 500; n++)
        {

            int a = (m*m)-(n*n);
            int b = 2*m*n;
            int c = (m*m)+(n*n);
            if (m > n && a + b == c)
            {
                cout << a << " + " << b << " = " << c << endl;
            }
        }
    }
    clock_t finish = clock()/ (CLOCKS_PER_SEC/1000);
cout << "completed in " <<clock() << " ms";
    return 0;
}

我试过了,但我的输出什么也没有。我认为它的工作方式是:对于每个小于/等于 500 且从 1 开始的整数 m,每次都将 1 添加到 m。 n 同样的交易。然后将这些值代入公式,如果 a+b == c,它会打印这些值,从而找到我的三元组。但我没有得到任何输出。

最佳答案

a + b = (m^2 + 2mn - n^2) = (m+n)^2 - 2n^2
c = m^2 + n^2 = (m+n)^2 - 2mn

你需要 a + b = c

--> 2n^2 = 2mn
--> m = n

由于您还需要 m > n,因此您找不到任何解决方案。

关于c++ - 使用欧几里得公式查找所有毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912898/

相关文章:

c# - 与从 C++ 到 C# 的内存映射文件共享链式结构

c++ - OpenGL/GLFW - 滚轮不响应

c++ win32api值编码在返回时损坏

list - 找到适当的值后,无限列表不会终止。

c++ - 特定的直角三角形在 Cpp 中未被识别为直角

c - 用 C 打印毕达哥拉斯三元组的表示

c++ - 多线程同步STD cout输出

c++ - 为什么我们不能在 T&& 的初始值设定项中放入 T& 或 T 的变量?

c++ - 在一组三角形中找到所有可能的毕达哥拉斯三角形

python - python 在 for 循环中效率低得令人难以置信,还是只是我的代码?