gpt4 book ai didi

c++ - 计算毕达哥拉斯三元组

转载 作者:太空狗 更新时间:2023-10-29 23:53:48 24 4
gpt4 key购买 nike

我正在编写一些代码来计算毕达哥拉斯三元组,但后来我得到了一些不是解决方案的值。这是代码:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
int j, counter = 0;
double candidate, sqrnbr;
for (int i = 400; i <= 500; i++) //note that the range is only from 400-500 since I am still testing the code
{
for (j = i; j <= 500; j++)
{
candidate = i*i+j*j;
sqrnbr=sqrt(candidate);
if (candidate/sqrnbr==sqrnbr)
{
cout << i << " and " << j << " and " << sqrnbr << endl;
counter++;
}
}

}
cout << counter << endl;
system("pause");
return 0;
}

它给出的输出之一是 408、410 和 578.415。有谁知道为什么会这样?

最佳答案

您计算一个double 并且从不检查它是否是一个整数值,所以您得到double 值。你不会得到更多,因为平方根通常不能表示为 double,所以

candidate/sqrnbr == sqrnbr

对于 candidate 的许多值都是假的。

要生成毕达哥拉斯三元组,请仅使用整数运算。还有比蛮力更好的方法,有一个经典的公式,所有的毕达哥拉斯三元组都是这种形式

d*(m^2 - n^2), d*2*m*n, d*(m^2 + n^2)

对于一些 d, m, n

关于c++ - 计算毕达哥拉斯三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com