public static void PseudoPrimeTest() { var count = 0; for (ulong i = 2; i < 100; i++) { if (IntegerMath.IsStrongPseudoprime(i, 50)) { Console.WriteLine(i); count++; } } Console.WriteLine(count); }
//кнопка построить таблицу private void BuildGridButton_Click(object sender, RoutedEventArgs e) { try { ulong[] figure; //массив чисел var list = new List <ulong>(); char[] delim = { ' ', ',' }; //ввод полинома if (PolinomTextBox.Text != string.Empty) { string entervalue = Convert.ToString(PolinomTextBox.Text); string[] arrayofnumber = entervalue.Split(delim, StringSplitOptions.RemoveEmptyEntries); foreach (var w in arrayofnumber) { list.Add(Convert.ToUInt64(w)); } figure = list.ToArray(); } else { MessageBox.Show("Введите полином!"); return; } //ввод характеристики if (CharacteristicTextBox.Text != string.Empty) { //проверяем введённые данные string entervalue = Convert.ToString(CharacteristicTextBox.Text); foreach (var t in entervalue) { if (!Char.IsDigit(t)) { MessageBox.Show("Введены недопустимые символы!"); ClearMethod(); return; } } Characteristic = (ulong)Convert.ToInt32(entervalue); var simpleornot = IntegerMath.IsStrongPseudoprime(Characteristic, 50); if (Characteristic < 1) { MessageBox.Show("Характеристика поля должна быть больше нуля!"); ClearMethod(); return; } if (!simpleornot) { MessageBox.Show("Характеристика поля простым числом!"); ClearMethod(); return; } } else { MessageBox.Show("Введите характеристику!"); return; } Polinom = new Polynomial(figure); new GfTable().ShowDialog(); } catch (Exception ex) { ClearMethod(); MessageBox.Show(ex.Message); } }
//ввести данные private void EnterButton_Click(object sender, RoutedEventArgs e) { try { int degree; //ввод характеристики if (CharTextBox.Text != string.Empty) { //проверяем введённые данные string entervalue = Convert.ToString(CharTextBox.Text); foreach (var t in entervalue) { if (!Char.IsDigit(t)) { MessageBox.Show("Введены недопустимые символы!"); ClearMethod(); return; } } CharacteristicofField = (ulong)Convert.ToInt64(entervalue); var simpleornot = IntegerMath.IsStrongPseudoprime(CharacteristicofField, 50); if (CharacteristicofField < 1) { MessageBox.Show("Характеристика поля должна быть больше нуля!"); ClearMethod(); return; } if (!simpleornot) { MessageBox.Show("Характеристика поля простым числом!"); ClearMethod(); return; } } else { MessageBox.Show("Введите характеристику!"); return; } //ввод полинома if (PolinomTextBox.Text != string.Empty) { var list = new List <ulong>(); char[] delim = { ' ', ',' }; string entervalue = Convert.ToString(PolinomTextBox.Text); string[] arrayofnumber = entervalue.Split(delim, StringSplitOptions.RemoveEmptyEntries); foreach (var w in arrayofnumber) { list.Add(Convert.ToUInt64(w)); } Figure = list.ToArray(); degree = Figure.Length - 1; } else { MessageBox.Show("Введите полином!"); return; } //ввод количества ошибок if (CountMistakeTextBox.Text != string.Empty) { //проверяем введённые данные string entervalue = Convert.ToString(CountMistakeTextBox.Text); foreach (var t in entervalue) { if (!Char.IsDigit(t)) { MessageBox.Show("Введены недопустимые символы!"); ClearMethod(); return; } } CountMistake = Convert.ToInt32(entervalue); if (CountMistake < 0) { MessageBox.Show("Количество ошибок должно быть больше 0!"); return; } } else { MessageBox.Show("Введите количество ошибок!"); return; } //проверка неравенства 2*t<q^m-1 (q-характеристика, m-степень полинома, t- кол-во ошибок) if (2 * CountMistake >= Math.Pow(CharacteristicofField, degree) - 1) { MessageBox.Show( "Должно выполняться неравенство 2*t<q^m-1,\n где q-характеристика поля, m-степень полинома, t- кол-во ошибок"); return; } HidButton(true); } catch (Exception ex) { MessageBox.Show(ex.Message); } }