从一个数字中获得最正方形的除数

时间:2014-09-15 04:12:41

标签: java

我试图找到一个数字中最平方的除数。例如,如果我的号码为15,我需要35。如果数字为18,我需要36

我差不多完成了我需要的东西,但是我无法弄清楚最后一步,这可能是最简单的......

这是我的代码:

    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

我不知道我哪里错了......有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,我不知道“最方形除数”到底是什么,但我认为这意味着你想要将数字分解为两个尽可能接近相等的因子。您只需要对代码进行一次小修改:一旦找到一个因子对,就停止寻找其他因素。要做到这一点,只需摆脱循环:

for(divisor = (int)Math.sqrt(num); divisor>0; divisor--){
    if(num%divisor==0){
        divisor1 = num/divisor;
        break;
    }
}