Проверка на простоту для Bigintegera - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте,пытаюсь сделать проверку на простоту для bigintegera.Появилось 2 вопроса: 1) почему компилятор ругается на то что переменная s не видна в 23 строке,она ведь объявлена. 2) как вызывать данный метод до того как он не вернет true?через while?
 static bool Proverka(BigInteger bigone)
        {
            int round = Convert.ToInt32(BigInteger.Log(bigone, 2));
            if (bigone <= 1)
                return false;
            if (bigone == 0)
                return false;
            if (bigone == 2)
                return true;
            BigInteger s;
            BigInteger d = bigone - 1;
            while(d%2==0)
            {
                d /= 2;
                s++;
            }
            for(int i =0;i<round;i++)
            {
                BigInteger a = Generate2();
                BigInteger x = BigInteger.ModPow(a, d, bigone);
                if (x == 1 || x == bigone - 1)
                    continue;
                for(int j=0; j<s-1;j++)
                {
                    x = (x * x) % bigone;
                    if (x == 1)
                        return false;
                    if (x == bigone - 1)
                        break;
                }
                if (x != bigone - 1)
                    return false; 
            }
            return true;

Решение задачи: «Проверка на простоту для Bigintegera»

textual
Листинг программы
  BigInteger valueq = new BigInteger();
            do
            {
                
                valueq = Generate();
                
            }
            while (Proverka(valueq));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5
Похожие ответы