成对的正整数与循环

时间:2013-05-24 03:48:57

标签: java loops for-loop nested nested-loops

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

我需要编写一个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 + ")") 
    }

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

3 个答案:

答案 0 :(得分:1)

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

但有一件事你确定,

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

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

因此请确保使用这些括号,否则运算符优先级可能会导致一些问题

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

答案 1 :(得分:0)

使用嵌套循环将是一次详尽的搜索,可能是解决此问题的最直接的方法。要记住以下几点:

  1. ^运算符实际上是XOR operator。如果您希望sqaure a * a
  2. ,请使用Math.pow(a,2)或a
  3. 谨防整数划分
  4. 您可能希望以1而不是0
  5. 开始循环

答案 2 :(得分:0)

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

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

所以方程式很简单,现在你需要检查(a + b)^ 2 / ab&gt; 2.最终检查是2个数字的总和应该可以被他们的产品整除。

检查a = 0和b = 0,因为两者都是除数。