Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带循环的正整数对_Java_Loops_For Loop_Nested_Nested Loops - Fatal编程技术网

Java 带循环的正整数对

Java 带循环的正整数对,java,loops,for-loop,nested,nested-loops,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 (answ

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

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

(a=0;a我认为你的方法是正确的

但有一件事你要确定

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

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

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


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

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

  • ^
    运算符实际上是一个。如果您要查看sqaure
    a
    a,请使用Math.pow(a,2)或
    a*a
  • 小心整数除法
  • 您可能希望从1开始循环,而不是从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>2。最终的检查是两个数的和应该可以被它们的乘积整除


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

    我总结了这就是为什么它是注释而不是代码。我必须使用这个公式,我必须从0开始(大于或等于)明白了。我建议不要从0开始,因为你说的是正整数,当除以0时(例如,当a和b都是0)您的比率将导致NaN或异常(在整数除法的情况下)。您应该使用
    if((a*a+b*b+1)%(a*b)==0)
    来查看a²+b²+1是否可被ab整除。立即使用
    %
    可以处理所有数字类型。您当前的方法仅适用于浮点类型(
    float
    double
    ),因为整数除法。将
    int
    除以
    int
    将得到
    int