我目前正在使用以下代码,但对于大量数据来说它非常慢
static int divisor(int number)
{
int i;
for (i = number / 2; i >= 1; i--)
{
if (number % i == 0)
{
break;
}
}
return i;
}
首先想到你能找到最小的除数d(当然不等于1),那么N/d将是你要找的最大除数。
例如,如果 N 可以被 3 整除,那么您将需要 2 次迭代才能找到答案 - 在您的情况下,大约需要 N/6 次迭代。
Edit:为了进一步改进你的算法,你可以只迭代奇数(在检查你的数字是否为偶数之后),或者更好的是,如果你有预先计算的素数列表,那么你只能迭代它们,因为最小除数显然是质数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)