java - 查找数字的毕达哥拉斯三元组
问题描述
我写了一个程序来找到一个数字的毕达哥拉斯三元组。代码如下。
public static void pythagoreanTriplet(int n) {
int i, j, k, count = 0;
for (i = 1; i <= n; i++) {
if (n == i)
break;
j = (n * n - 2 * n * i) / (2 * n - 2 * i);
k = n - i - j;
if ((i * i + j * j == k * k) && j > 0 && k > 0) {
System.out.println(i + " " + j + " " + k);
count++;
break;
}
}
if (count != 1) {
System.out.println("Impossible");
}
}
此代码适用于除一个以外的所有数字。如果输入 n = 408,则输出应为 119 120 169,但我的代码输出为 102 136 170。
解决方案
对于这个毕达哥拉斯三元组,可能有不止一个解决方案,条件是,第二个“if”中的“break”在达到较低的数字(即 102)后终止,它永远不会达到 119,
推荐阅读
- ruby-on-rails - 在 Swagger 文档中定义对象数组
- sql - 同一张表TSQL上的多个JOIN
- node.js - Skype 面试 API
- python - 我正在尝试根据一些规则将字典键与其值匹配,而不使用其他库
- graphql - 在缓存重定向中找不到缓存键
- symfony - 在 Symfony 中使用登录详细信息自动回复
- azure - 如何将容器 blob 下载到 Azure 应用服务 wwwroot?
- scala - 参数 P 的隐含值在哪里:cats.Parallel[cats.effect.IO,F]
- google-cloud-platform - GCP Composer(气流)运算符
- c++ - CryptQueryObject 系统地下降