Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться в алгоритме генерации простых чилел.

14K
23 сентября 2008 года
Alexey03
15 / / 26.10.2006
Есть класс C# для работы с большими целыми числами. В нем имеются метод для генерации больших простых чисел. Помогите разобраться в алгоритме его работы.
Код:
public static BigInt GeneratePrime(int bit_length, int confidence, Random rnd)
        {
            if ((bit_length < 2) || (confidence < 1))
                throw new ArgumentOutOfRangeException();
            BigInt n = THREE;
            while (n.BitLength < bit_length)
            {
                BigInt s = n;
                while (true)
                {
                    BigInt max_value = FOUR * s + TWO;
                    int num_bits = max_value.BitLength - 1;
                    BigInt r;
                    do
                    {
                        r = new BigInt(num_bits, rnd);//генерируется случайное число длиной не более num_bits
                    }
                    while ((r <= ONE) || (r > max_value) || (r % TWO != ZERO));
                    n = s * r + ONE;
                    if (n.IsProbablePrime(confidence, rnd))//проверка на простоту с помощью алгоритма Рабина-Миллера
                        break;
                }
            }
            return n;
        }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог