Мне нужен оптимальный алгоритм, чтобы найти наибольший делитель числа N. Предпочтительно в C ++ или C # - PullRequest
8 голосов
/ 23 августа 2010

В настоящее время я использую следующий код, но он очень медленный для больших чисел



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

Ответы [ 11 ]

0 голосов
/ 23 августа 2010

Вы в основном столкнулись с проблемой «факторизации больших чисел», которая является основой современного шифрования с открытым ключом и, как известно (или надеется), является сложной вычислительной проблемой. Я действительно надеюсь, что вы не найдете гораздо лучшего решения, иначе вся инфраструктура безопасности мира рухнет ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...