gpt4 book ai didi

c++ - 找到唯一的毕达哥拉斯三元组

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:48 26 4
gpt4 key购买 nike

我试图从一系列勾股三元组中排除重复三角形,这些三角形只打印斜边为 100 的三角形,但是我在排除部分所做的操作失败了......我有以下内容:

....
int one_hundred = 0,
if( (a*a) + (b*b) == (h*h) ){

//exclusion
if((a == b)){

continue;

}else {

//Just prints the the triangles that have hypotenuses of 100
if(h == 100){
cout << a << " " << b << " " << h << endl;

}

.....

}

现在输出应该是

我所说的重复是指第一行和最后一行具有相同的一组边对

我想要的是这样的输出:

enter image description here

但是我这样做是这样的:

//看是否重复

if((a == 96)){

continue;

}

我认为通过比较 a == b 我会达到同样的效果,但我没有:

if((a == b)){

continue;

}

希望这能澄清我正在尝试做的事情......

再次感谢!!

最佳答案

从一系列毕达哥拉斯三元组中过滤掉重复项非常困难,因为您需要永久记住所有旧的三元组,以便进行大量比较。

更好的方法是一开始就不要生成重复。为此,您可以使用这组公式(来自 the "Generating a triple" section of the Wikipedia article on Pythagorean triples ):

a = k·(m2 - n2)
b = k·(2mn)
c = k·(m2 + n2)

其中kmn是正整数,mn 是互质的(意味着它们的最大公分母是 1)并且 mn 是偶数。

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

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