我试图找到一个数字中最平方的除数。例如,如果我的号码为15
,我需要3
和5
。如果数字为18
,我需要3
和6
。
我差不多完成了我需要的东西,但是我无法弄清楚最后一步,这可能是最简单的......
这是我的代码:
int divisor;
int divisor1 = 0;
int num = gridArr.length;
for(divisor = (int)Math.sqrt(num); divisor>0; divisor--){
if(num%divisor==0){
divisor1 = num/divisor;
}
}
System.out.println(divisor+" "+divisor1);
在这种情况下,输出为:
0 15
如果我在if语句中移动System.out.print
,则输出为:
3 5
1 15
我只需要3 5
。
我不知道我哪里错了......有什么想法吗?
答案 0 :(得分:0)
好吧,我不知道“最方形除数”到底是什么,但我认为这意味着你想要将数字分解为两个尽可能接近相等的因子。您只需要对代码进行一次小修改:一旦找到一个因子对,就停止寻找其他因素。要做到这一点,只需摆脱循环:
for(divisor = (int)Math.sqrt(num); divisor>0; divisor--){
if(num%divisor==0){
divisor1 = num/divisor;
break;
}
}