Проверка на простоту для 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));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д