Я пытаюсь разделить список на подсписки, которые как можно больше. Если список не может быть разделен таким образом, я буду обрабатывать его по мере необходимости, но мне нужно получить наибольшее число, кроме самого N, которое равномерно разделяет 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;
}
ahhhh, конечно. Что со мной не так? –
Возможный дубликат [Мне нужен оптимальный алгоритм для нахождения наибольшего делителя числа N. Предпочтительно в C++ или C#] (http://stackoverflow.com/questions/3545259/i-need-an-optimal-algorithm-to -find-the-most-divisor-of-a-number-n-preferabl) – Paul
Возможный дубликат [Java: получить наибольший общий делитель] (http: // stackoverflow.com/questions/4009198/java-get-most-common-divisor) – MikaelF