java给定三边_java – 确定给定数字N是否可以成为具有所有3个整数边的直角三角形的斜边的算法...

假设您给出了一个直角三角形的斜边,那么如何确定给定的斜边是否有两个可能的整体较小的边.

例如,你被赋予斜边为5.然后你必须确定给定的直角三角形是否有较小的整数边.答案是肯定的,因为我们可以将较小的边用作3和4,因此得到3-4- 5直角三角形.

同样,对于斜边7,我们可以没有这样的直角三角形.

换句话说,我们必须找出给定数字N是否可以作为右三角形的斜边,所有三边都是整数.

我在Pythagorean triples完成了整篇文章,但仍然没有成功.我很困惑要检查哪些条件.请帮助.

解决方法:

你有一个原始的毕达哥拉斯三重奏:

(p^2 - q^2)^2 + (2 * p * q))^2 = (p^2 + q^2)^2 = N^2

假设p> = q.然后我们有

N >= 2 * q^2 or q <= sqrt(N / 2)

假设N = 13.那么我们需要q< = sqrt(13/2)= 2.54

q = 2 => p ^ 2 = 13 – 4 = 9,这是一个正方形.

因此,您可以从1..sqrt(N / 2)获得一个小数字’i’循环,并检查N – (i ^ 2)是否为正方形.

对于原始毕达哥拉斯元组的成员,这将是O(sqrt(N)).

C/C++中的示例代码:

#include

#include

void CheckTuple(int n)

{

int k = sqrt(n/2.0);

for (int i = 1; i <= k; i++) {

int tmp = sqrt((double)(n - i * i));

if ((tmp * tmp) == (n - i * i)) {

printf("%d^2 + %d^2 = %d^2\n", (tmp*tmp - i*i), 2 * tmp * i, n);

return;

}

}

printf("%d is not part of a tuple\n", n);

return;

}

int main(int argc, char *argv[])

{

CheckTuple(5);

CheckTuple(6);

CheckTuple(13);

CheckTuple(10);

CheckTuple(25);

return 0;

}

输出:

3^2 + 4^2 = 5^2

6 is not part of a tuple

5^2 + 12^2 = 13^2

8^2 + 6^2 = 10^2

7^2 + 24^2 = 25^2

标签:java,c-2,algorithm,c-3,geometry

来源: https://codeday.me/bug/20190517/1121270.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值