java - N 的最大约数(不包括它自己)

标签 java int division modulus

我试图将一个列表分成尽可能大的子列表。如果列表不能这样划分,我会按需要处理,但我需要得到除 N 本身之外的最大数,将 N 平均划分。

我写了一个非常幼稚的解决方案,但我觉得应该有一个公式或其他东西可以在恒定时间内完成。我的列表不是那么大,最大大小是 1000。这可能不是关键路径,但是有更好的算法吗?

public static int largestDivisor(int n){
   int divisor = 0;
   for (int i = 1; i <= n/2; i++)
       if (n % i == 0) 
           divisor = i;

   return divisor; 
}

最佳答案

反向迭代值。只需返回您找到的第一个(它将是最大的)。类似的东西,

public static int largestDivisor(int n) {
    for (int i = n / 2; i >= 2; i--) {
        if (n % i == 0) {
            return i;
        }
    }
    return 1;
}

或者,您可以对 @WillemVanOnsem 稍作改进的 answer并从奇数开始,例如;

public static int largestDivisor(int n) {
    if (n % 2 == 0) {
        return n / 2;
    }
    final int sqrtn = (int) Math.sqrt(n);
    for (int i = 3; i <= sqrtn; i += 2) {
        if (n % i == 0) {
            return n / i;
        }
    }
    return 1;
}

关于java - N 的最大约数(不包括它自己),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834643/

相关文章:

java - IText5 - 每页都有不同的页脚

php - 在php中将json字符串转换为整数

C++ 获得整数除法和余数的最佳方法

c - 求余数时带空格的逻辑

mysql - 使用子查询和可能的连接来获取人口百分比

java - 如何从内部重新绘制面板

java - 升级到 JAVA 8 后 Threadlocal 在 tomcat 上的不当行为

java - 从 Apache TDB 加载数据集/模型的性能问题

java - 两个int的百分比?

javascript - 我定义了一些变量并使用它们来检索有效的纬度和经度,但是在我将变量传递给另一个函数后不起作用