如何解决我需要一种最佳算法来找到数字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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。