(顺便说一句,我们还没有使用数组。我在我的循环章节中)
我需要编写一个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 + ")")
}
这会正常工作还是我看错了这个问题
答案 0 :(得分:1)
我认为你的方法是正确的,
但有一件事你确定,
您正在使用表达式:answer = a^2 + b^2 + 1 / (a*b)
但您在问题中提到(a^2 + b^2 + 1) / (a*b)
。
因此请确保使用这些括号,否则运算符优先级可能会导致一些问题
在1 / (a*b)
完成后,(a*b)
就会解决,你不希望这样,对吧。因此,请注意运算符优先级或使用括号。
答案 1 :(得分:0)
使用嵌套循环将是一次详尽的搜索,可能是解决此问题的最直接的方法。要记住以下几点:
^
运算符实际上是XOR operator。如果您希望sqaure a * a
a
答案 2 :(得分:0)
我可以将您的表达式更改为以下内容:
- (a ^ 2 + b ^ 2 + 1 + 2ab-2ab)/(a * b)
- ((a + b)^ 2-2ab)/(a * b)
- (a + b)^ 2 / ab -2
醇>
所以方程式很简单,现在你需要检查(a + b)^ 2 / ab&gt; 2.最终检查是2个数字的总和应该可以被他们的产品整除。
检查a = 0和b = 0,因为两者都是除数。