Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数字中获取最大平方因子_Java - Fatal编程技术网

Java 从数字中获取最大平方因子

Java 从数字中获取最大平方因子,java,Java,我试图找到一个数的最大平方因子。例如,如果我的号码是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)

我试图找到一个数的最大平方因子。例如,如果我的号码是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
3 5
1 15
如果将System.out.print移到If语句内部,则输出为:

0 15
3 5
1 15
而我只需要35个


我不知道我错在哪里。。。有什么想法吗?

好的,我不知道大多数的平方因子是什么,但我假设这意味着你想把数字分成两个尽可能接近相等的因子。您只需要对代码进行一次小的修改:一旦找到一个因子对,只需停止寻找其他因子对即可。要做到这一点,只需打破循环:

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

平方除数是什么意思?3是15的平方因子吗?在if语句中打破for循环是的!就这样。谢谢