我正在做一些自学成才的Java,但似乎无法弄清楚这个循环中的问题:
问题是找到两个整数n1和n2的最大公约数,其中d是较小的值.方法是递减d直到GCD或它达到1 ...这是我到目前为止的地方:
Scanner input = new Scanner(System.in);
System.out.println("Please enter two integers: ");
int n1 = input.nextInt();
int n2 = input.nextInt();
int d = 0;
int temp = 0;
//finds the lowest value
if(n1 < n2) {
temp = n1;
n1 = n2;
n2 = temp;
}
for(d = n1;(n1 % d !=0 && n2 % d != 0);d--) {
}
System.out.println("The GCD of " + n1 + " and " + n2 + " is " + d);
Run Code Online (Sandbox Code Playgroud)
有什么指针吗?
这里的逻辑错了:
(n1 % d !=0 && n2 % d != 0)
Run Code Online (Sandbox Code Playgroud)
改成:
(n1 % d !=0 || n2 % d != 0)
Run Code Online (Sandbox Code Playgroud)
或者一旦看到n1 或 n2 的除数而不是它们的GCD,代码将停止,因为循环终止条件应该是你想要做的否定.
| 归档时间: |
|
| 查看次数: |
9886 次 |
| 最近记录: |