26/05/12 1700 приходит весна?
|
Последний раз редактировалось B@R5uk 09.08.2024, 21:29, всего редактировалось 2 раз(а).
Написал брутфорс-программку, чтобы посмотреть для каких пар m, n существуют k и в каком количестве (специально исключил единичные k, так как они существуют в любом случае):
public class Test_Semiproduct_Powers {
public static void main (String [] args) {
int k, kk, l, m, n, rem, count;
int [] coprimes;
boolean flag;
boolean [] flags;
//m = 71;
n = 4;
flags = new boolean [n];
for (k = 1, l = 0; n > k; ++k) {
if (1 != gcd (k, n)) {
continue;
}
flags [k] = true;
++l;
}
coprimes = new int [l];
System .out .print (n + ": ");
for (k = 1, l = 0; coprimes .length > l; ++k) {
if (flags [k]) {
if (0 != l) {
System .out .print (", ");
}
System .out .print (k);
coprimes [l] = k;
++l;
}
}
System .out .println ("\n");
for (m = 3; 2000 > m; ++m) {
flag = true;
flags = new boolean [m];
count = 0;
for (k = 2; m > k; ++k) {
rem = modPower (k, n, m);
if (1 != rem) {
continue;
}
if (flags [k]) {
continue;
}
++count;
if (flag) {
flag = false;
System .out .println ("\n" + m + ":");
}
for (l = 0; coprimes .length > l; ++l) {
kk = modPower (k, coprimes [l], m);
if (flags [kk]) {
continue;
}
flags [kk] = true;
if (0 != l) {
System .out .print (", ");
}
System .out .print (kk);
}
System .out .println ();
//System .out .println (String .format ("%4d %4d", k, ));
}
if (4 < count) {
System .out .println (count + " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
}
private static int modPower (int argBase, int argPower, int argMod) {
int result = 1;
while (0 < argPower) {
if (0 != (argPower & 1)) {
result *= argBase;
result %= argMod;
}
argBase *= argBase;
argBase %= argMod;
argPower >>= 1;
}
return result;
}
private static int gcd (int a, int b) {
int c;
if (a < b) {
c = a;
a = b;
b = c;
}
while (0 != b) {
c = a % b;
a = b;
b = c;
}
return a;
}
}
Никаких групп, чистая арифметика. Для количество различных k может быть 1, 3, 7, 15, 31 и так далее, то есть степени двойки без единицы (так как единичную k я выкинул). Ни одна степень не входит в пары или тройки, так как взаимнопростых чисел с двойкой существует только одна штука: единица. Не знаю, почему тут возникли степени двойки (для чисел m ну никак не связанных со степенями двойки), поэтому решил составить табличку, когда какая степень появляется:
Number
of groups m
Zm # Z2
3: 8, 12, 15, 16, 20, 21, 28, 30, 32, 33, 35, 36, 39, 42, 44, 45,
51, 52, 55, 57, 63, 64, 65, 66, 68, 69, 70, 75, 76, 77, 78
85, 87, 90, 91, 92, 93, 95, 99, 100, 102, 108, 110, 111, 114
115, 116, 117, 119, 123, 124, 126, 128, 129, 130, 135, 138,
141, 143, 145, 147, 148, 150, 153, 154, 155, 159, 161, 164,
...
7: 24, 40, 48, 56, 60, 72, 80, 84, 88, 96, 104, 105, 112, 132, 136,
140, 144, 152, 156, 160, 165, ...
15: 120, 168, 240, 264, 280, 312, 336, 360, 408, 420, 440, 456, 480
504, 520, 528, 552, 560, 600, 616, 624, 660, 672, 680, 696,
720, 728, 744, 760, 780, 792, 816, 880, 888, 912, 920, 924,
936, 952, 960, 984, 1008, 1020, 1032, 1040, ...
31: 840, 1320, ...
Строка для тройки — это вот эта последовательность (похожа на эту, но с числа 63 отличия), для 7 — вот эта, для 15 — вот эта и для 31 — вот эта. В вот эта последовательность указывает первое число в каждом абзаце. Как ни крути, а определение этих последовательностей завязано на группы: "Numbers n such that the multiplicative group modulo n is the direct product of {insert number here} cyclic groups". Какая у них связь с количеством уникальных чисел k и почему степени двойки — ума не приложу. В общем случае, конечно, без групп объяснить тут вряд ли что-то получится. Даже пары с нетривиальными k существуют только тогда, когда наибольший общий делитель отличен от единицы: А количество неприводимых друг к другу чисел k завязано на количество уникальных гомоморфизмов: При этом, я не знаю, как для "циклических расширений", а в общем случае ситуация ещё хуже: бывает так, что "не изоморфные" гомоморфизмы ведут к одной группе. Как заранее отличить все эти случаи — непонятно.
|
|