Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[62]

Не все значения a соответствуют этому требованию. Чтобы a было квадратичным вычетом по n, оно должно быть квадратичным вычетом по модулю всех простых сомножителей n. Например, если p = 7, квадратичными вычетами являются числа 1, 2, и 4:

12 = 1 = 1 (mod 7)

22 = 4 = 4 (mod 7)

32 = 9 = 2 (mod 7)

42 = 16 = 2 (mod 7) 52 = 25 = 4 (mod 7)

62 = 36 = 1 (mod 7)

Заметьте, что каждый квадратичный вычет дважды появляется в этом списке. Значений x, удовлетворяющих любому из следующих уравнений, не существует:

x2 = 3 (mod 7) x2 = 5 (mod 7) x2 = 6 (mod 7)

Эти числа - 3, 5 и 6 - не являются квадратичными вычетами по модулю 7.

Хотя я этого и не делаю, несложно доказать, что когда p нечетно, существует в точности ( p - 1)/2 квадратичных вычетов по модулю p, и столько же чисел, не являющихся квадратичными вычетами по модулю p. Кроме того, если a - это квадратичный вычет по модулю p, то у a в точности два квадратных корня, один между 0 и (p-1)/2, а второй - между (p - 1)/2 и (p - 1). Один из этих квадратных корней одновременно является квадрати ч-ным остатком по модулю p, он называется главным квадратным корнем.

Если n является произведением двух простых чисел, p и q, то существует ровно (p - l)(q - 1)/4 квадратичных вычетов по модулю n. Квадратичный вычет по модулю n является совершенным квадратом по модулю n, потому что для того, чтобы быть квадратом по модулю n, вычет должен быть квадратом по модулю p и квадратом по модулю q. Например, существует одиннадцать квадратичных остатков mod 35: 1, 4, 9, 11, 15, 16, 21, 25, 29 и 30. У каждого квадратичного вычета ровно четыре квадратных корня.

Символ Лежандра

Символ Лежандра, L(a,/?), определен, если a - это любое целое число, а p - простое число, большее, чем 2. Он равен 0, 1 или -1.

L(a,p) = 0, если a делится на p.

L(a,p) = 1, если a - квадратичный вычет по модулю p.

L(a,p) = -1, если a не является квадратичным вычетом по модулю p.

L(a,p) можно рассчитать следующим образом:

L(a,p = a(p-1)/2 mod p

Или можно воспользоваться следующим алгоритмом:

1.Если a = 1, то L(a,p) = 1

2.Если a четно, то L( a,p) = L(a/2,p) * "2-1)/8

3.Если a нечетно (и Ф 1), то L(a,p)= L(p mod a, p)*(-1)(a-1)(p-1)/4

Обратите внимание, что этот метод также является эффективным способом определить, является ли a квадратичным вычетом по модулю p (для простого числа p).

Символ Якоби

Символ Якоби, J(a,n), представляет собой обобщение символа Лежандра на составные модули, он определ я-ется для любого целого a и любого нечетного целого n. Функция удобна при проверке на простоту. Символ Яко-би является функцией на множестве полученных вычетов делителей n и может быть вычислен по различным формулам [1412]. Вот один из способов:

Определение 1: J( a,n) определен, только если n нечетно.

Определение 2: J(0, n) = 0.


0пределение 3: Если n - простое число, то символ Якоби J( a,n) = 0, если a делится на n.

0пределение 4: Если n - простое число, то символ Якоби J( a,n) = 1, если a - квадратичный вычет по модулю

0пределение 5: Если n - простое число, то символ Якоби J( a,n) = -1, если a не является квадратичным вычетом по модулю n.

0пределение 6: Если n - составное число, то символ Якоби J(a,n) = J(a,/;1)* ... * J(a,p„), где p1, ... , pm - это разложение n на простые сомножители.

Следующий алгоритм рекурсивно рассчитывает символ Якоби:

Правило 1: J(1,n) = 1

Правило 2: J(a*b,n) = J(a,n)* J(b,n)

Правило 3: J(2,n) =, если (n2-1) /8 нечетно, и -1 в противном случае Правило 4: J(a,n)= J((a mod n),n) Правило 5: J(a, b1*b2) = J(a, b1)* J(a, b2)

Правило 6: Если наибольший общий делитель a и b = 1, а также a и b нечетны: Правило 6a: J(a,b)= J(b, a), если (a - l)(b - 1)/4 четно Правило 6b: J(a,b)= -J(b, a), если (a - l)(b - 1)/4 нечетно Вот алгоритм на языке C:

/* Этот алгоритм рекурсивно вычисляет символ Якоби */ int jacobi(int a, int b) { int g;

assert(odd(b));

if (a >= b) a %= b; /* по правилу 4 */

if (a == 0) return 0; /* по определению 1 */

if (a == 1) return 1; /* по правилу 1 */

if (a < 0)

if ((b-l)/2 % 2 == 0)

return jacobi(-a,b);

return -jacobi(-a,b); if (a % 2 == 0) /* a четно */

if (((b*b -1)/8) % 2 == 0)

return +jacobi(a/2,b);

return -jacobi(a/2,b); /* по правилам 3 и 2 */

g = gcd(a,b);

assert(odd(a)); /* это обеспечивается проверкой (a % 2 == 0) */ if (g == a) /* b делится на a */

return 0; /* по правилу 5 */ else if (g != 1)

return jacobi(g,b)*jacobi(a/g,b); /* по правилу 2 */

else if (((a-l)*(b-l)/4) % 2 == 0)

return +jacobi(b,a); /* по правилу 6a */

return -jacobi(b,a); /* по правилу 6b */

Если заранее известно, что n - простое число, вместо использования предыдущего алгоритма просто вычи с-лите a((n-1)/2) mod n, в этом случае J(a,n) эквивалентен символу Лежандра.

Символ Якоби нельзя использовать для определения того, является ли a квадратичным вычетом по модулю


n (если, конечно, n не является простым числом). Обратите внимание, что если J( a,n) = 1 и n - составное число, то утверждение, что a является квадратичным вычетом по модулю n, не обязательно будет истиной. Например:

J(7,143) = J(7,11)* J(7,13) == 1

Однако не существует таких целых чисел x, что x2 = 7 (mod 143). Целые числа Блюма

Если p и q - два простых числа, конгруэнтных 3 по модулю 4, то n = pq иногда называют целым числом Блюма. Если n - это целое число Блюма, у каждого квадратичного вычета ровно четыре квадратных корня, один из которых также является квадратом - это главный квадратный корень. Например, главный квадратный корень 139 mod 437 - это 24. Остальные три корня - это 185, 252 и 413.

Генераторы

Если p - простое число, и g меньше, чем p то g называется генератором по модулю p если для каждого числа b от 1 до p - 1 существует некоторое число a, что ga = b (mod p).

Иными словами, g является примитивом по отношению к p. Например, если p = 11, то 2 - это генератор по модулю 11:

210 = 1024 = 1 (mod 11)

21= 2 = 2 (mod 11)

28= 256 = 3 (mod 11)

22= 4 = 4 (mod 11)

24= 16 = 5 (mod 11)

29= 512 = 6 (mod 11) 27 = 128 = 7 (mod 11)

23= 8 = 8 (mod 11)

26 = 64 = 9 (mod 11)

25= 32 = 10 (mod 11)

Каждое число от 1 до 10 может быть представлено как 2 a (mod p). Для p = 11 генераторами являются 2, 6, 7 и 8. Другие числа не являются генераторами. Например, генератором не является число 3, потому что не сущ е-ствует решения для

3a = 2 (mod 11)

В общем случае проверить, является ли данное число генератором, нелегко. Однако задщача упрощается, е с-ли известно разложение на множители для p - 1. Пусть q1, q2, ... , qn - это различные простые множители p - 1. Чтобы проверить, является ли число g генератором по модулю p вычислите

gfr-1)/q mod p

для всех значений q = q1, q2, ... , qn.

Если это число равно 1 для некоторого q, то g не является генератором. Если для всех значений q рассчитанное значение не равно 1, то g - это генератор.

Например, пусть p = 11. Простые множители p - 1 = 10 - это 2 и 5. Для проверки того, является ли число 2 генератором, вычислим:

2(11-1)/5 (mod 11) = 4

2(11-1)/2 (mod 11) = 10

Ни один из ответов не равен 1, поэтому 2 - это генератор. Проверим, является генератором ли число 3: 3(11-1)/5 (mod 11) = 9 3(11-1)/2 (mod 11) = 1 Следовательно, 3 - это не генератор.



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98] [стр.99] [стр.100] [стр.101] [стр.102] [стр.103] [стр.104] [стр.105] [стр.106] [стр.107] [стр.108] [стр.109] [стр.110] [стр.111] [стр.112] [стр.113] [стр.114] [стр.115] [стр.116] [стр.117] [стр.118] [стр.119] [стр.120] [стр.121] [стр.122] [стр.123] [стр.124] [стр.125] [стр.126] [стр.127] [стр.128] [стр.129] [стр.130] [стр.131] [стр.132] [стр.133] [стр.134] [стр.135] [стр.136] [стр.137] [стр.138] [стр.139] [стр.140] [стр.141] [стр.142] [стр.143] [стр.144] [стр.145] [стр.146] [стр.147] [стр.148] [стр.149] [стр.150] [стр.151] [стр.152] [стр.153] [стр.154] [стр.155] [стр.156] [стр.157] [стр.158] [стр.159] [стр.160] [стр.161] [стр.162] [стр.163] [стр.164] [стр.165] [стр.166] [стр.167] [стр.168] [стр.169] [стр.170] [стр.171] [стр.172] [стр.173] [стр.174] [стр.175] [стр.176] [стр.177] [стр.178] [стр.179] [стр.180] [стр.181] [стр.182] [стр.183] [стр.184] [стр.185] [стр.186] [стр.187] [стр.188] [стр.189] [стр.190] [стр.191] [стр.192] [стр.193] [стр.194] [стр.195] [стр.196] [стр.197] [стр.198] [стр.199] [стр.200] [стр.201] [стр.202] [стр.203]