java - 程序寻找总和为 1000 的毕达哥拉斯三元组,不明白为什么它不起作用?

标签 java math

import java.util.*;
public class Euler9
{
    public static void main (String[] args) 
    {
        double a=3, b=4, c=5;
        double pdt=0;
        int i;
        for(i=0;i<=500000;i++)
        {
            if ((a*a)+(b*b)==(c*c))
            {
                System.out.println("a = "+a+" b = "+b+" c = "+c+" is a pyth tripl.");
                if ((a+b+c)==1000.0)
                {
                    pdt=a*b*c;
                    break;
                }
            }
            a++;
            b++;
            c++;
        }
        System.out.println(pdt);
    }
}

嘿,我一直在尝试为我正在类的类(class)做一些欧拉问题,这是我的解决方案是 Euler9,https://projecteuler.net/problem=9但由于某种原因我无法让这段代码工作。无论我将 i 设置为多少,它似乎都会在一次迭代后结束,我一生都无法弄清楚为什么。感谢您的帮助。

最佳答案

如果您使用多个 for 循环执行类似的操作,则可以大大减少代码,而且我认为此任务不需要使用 double 或导入 java.util.*; 当您根本不使用它时:

class Euler9 {
  public static void main(String[] args) {
    int sum = 1000;
    for(int a = 1; a <= sum/3; a++) {
      for (int b = a + 1; b <= sum/2; b++) {
        int c = sum - a - b;
        if (a*a + b*b == c*c) {
          System.out.format("a=%d, b=%d, c=%d\n", a, b, c);
        }
      }
    }
  }
}

输出:

a=200, b=375, c=425

关于java - 程序寻找总和为 1000 的毕达哥拉斯三元组,不明白为什么它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548776/

相关文章:

java - 旋转偏移坐标

java - 用 Java 解决数学菱形继承(钻石问题)

java - 当命令窗口关闭时,命令行是否停止在命令窗口中启动的程序?

java - 如何使用java访问selenium中具有相同类名的第二个元素

c++ - 什么是 R 语言的快速免费矩阵/线性代数库?

java - 为什么它只在90°和-90°之间旋转?

java - 如何使用 .stream() 将存储库中的数据按字母顺序排序

java - Spring引导+ hibernate 搜索: entityManagerFactory dependency error

java - 部署spring mvc应用程序后放置文件的css、img和js

java - 在java中的客户端服务器套接字中将字符串转换为int