0

(顺便说一句,我们还没有使用数组。我在我的循环章节中)

我需要编写一个 Java 程序,它将输出所有正整数对 (a,b) 使得 a 和 b 大于或等于 0 且小于或等于 1000 以及比率 (a^2 + b^ 2 + 1) / (a*b) 是一个整数。

我的方法是做一个嵌套循环

for (a = 0; a <= 1000; a++)
    for (b = 0; b <= 1000; b++)
    {
        //answer = a^2 + b^2 + 1 / (a*b)
        //if (answer % 1 == 0)
        //    System.out.println("(" + a + ", " + b + ")") 
    }

这会正常工作还是我在看这个问题都错了

4

3 回答 3

1

我认为你的方法是正确的,

但你要确定的一件事,

您正在使用表达式:answer = a^2 + b^2 + 1 / (a*b)

但是您在问题中提到了(a^2 + b^2 + 1) / (a*b).

所以请确保您使用的是那些括号,否则运算符优先级可能会给您带来一些问题

喜欢1 / (a*b)会在(a*b)完成后解决,你不希望这样,对吧。因此,请注意运算符优先级或使用括号。

于 2013-05-24T03:53:12.947 回答
0

使用嵌套循环将是一个详尽的搜索,并且可能是解决这个问题的最直接的方法。要记住几件事:

  1. ^运算符实际上是一个XOR 运算符。使用 Math.pow(a, 2) 或者a * a如果您正在寻找a
  2. 小心整数除法
  3. 您可能希望从 1 而不是 0 开始循环
于 2013-05-24T04:03:50.497 回答
0

我可以将您的表达式更改为以下内容:

  1. (a^2 + b^2 + 1+2ab-2ab) / (a*b)
  2. ((a+b)^2-2ab)/(a*b)
  3. (a+b)^2/ab -2

所以方程很简单,现在你需要检查 (a+b)^2/ab > 2。最终检查是 2 个数字的总和应该能被它们的乘积整除。

添加对 a=0 和 b=0 的检查,因为它们都是除数。

于 2013-05-24T04:04:10.383 回答