我需要一种最佳算法来找到数字N的最大除数最好在C ++或C#中

问题描述

首先想到您可以找到最小的除数d(当然不等于1),然后N / d将是您要查找的最大除数。

例如,如果N被3整除,那么您将需要2次迭代才能找到答案-在您的情况下,它大约是N / 6次迭代。

要进一步改善算法,您可以仅对奇数进行迭代(在检查是否为偶数之后),或者更好的是,如果您已预先计算了素数列表,则只能对它们进行迭代,因为最小除数显然是是素数。

解决方法

我目前正在使用以下代码,但是对于大量用户来说它非常慢

        static int divisor(int number)
        {
            int i;
            for (i = number / 2; i >= 1; i--)
            {
                if (number % i == 0)
                {
                    break;
                }
            }
            return i;
        }

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...