Java 带循环的正整数对
(顺便说一句,我们还没有使用数组。我在我的循环章节中) 我需要编写一个Java程序,输出所有对正整数,(a,b),这样a和b大于或等于0,小于或等于1000,并且比率(a^2+b^2+1)/(a*b)是一个整数 我的方法是做一个嵌套循环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
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)
完成后解决,您不希望这样,对吧。因此,请注意运算符优先级或使用括号。使用嵌套循环将是一个彻底的搜索,可能是解决此问题的最直接的方法。请记住以下几点:
^
运算符实际上是一个。如果您要查看sqaurea
a,请使用Math.pow(a,2)或a*a
我可以将您的表达式更改为以下内容:
添加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
。