今天做题看到一个题目,求解一个整数的最小公因数。好像做过哦,然后我就写了以下代码
for (int i = 0; i < number / 2 + 1; i++) {
while (number % i == 0) {
System.out.print(i + " ");
number /= i;
}
}
然而很巧的,当number = 120 时,输出了2, 2, 2, 3。
????我的5呢?实在找不到错误
设置断点,单步调试,然后发现了根源所在。
原因是for (int i = 0; i < number / 2 + 1; i++ ) 这个循环条件除了问题。每当出现了一个因数时,number的值就变化了。所以修改如下。
for (int i = 2; i < number + 1; i++) {
while(number % i == 0) {
System.out.print(i + " ");
number /= i;
}
}