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);
}
}
嘿,我一直在尝试为我正在学习的课程做一些Euler问题,这是我的解决方案是Euler9,https://projecteuler.net/problem=9但是由于某种原因我不能让这段代码起作用。无论我设置的价值如何,它似乎在一次迭代后结束,我无法弄清楚为什么我的生活。谢谢你的帮助。
答案 0 :(得分:1)
如果你使用多个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
答案 1 :(得分:0)
您正在同时递增a
,b
,c
。
从本质上讲,你只是想要
虽然暴力算法(只是尝试每个选项)不是最好的方法,但如果你想坚持你的方法,你可能想尝试在单独的循环中增加a,b,c。
答案 2 :(得分:0)
您无法立即增加所有这些内容。你可以做点什么
for(int a = 0; a < 100; a++)
for(int b = 0; b < 100; b++)
for(int c = 0; c < 100; c++)
if(a^2 + b^2 == c^2)
...
答案 3 :(得分:-1)
我现在看到我对三联体的理解是有缺陷的。我假设a,b,c是满足条件的三个连续自然数(a ^ 2 + b ^ 2 = c ^ 2)。事实并非如此,正如一个简单的谷歌搜索所示。