D:\go20190906\src\SmallRing>cl /D PRINT_STDOUT /c Yn.cpp
用于 x86 的 Microsoft (R) C/C++ 优化编译器 17.00.50727.1 版版权所有(C) Microsoft Corporation。保留所有权利。
Yn.cpp
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE\xlocale(336) : warning C4530: 使用了 C++ 异常处理程序,但
未启用展开语义。请指定 /EHsc
D:\go20190906\src\SmallRing>link /OUT:Yn.exe Yn.obj
Microsoft (R) Incremental Linker Version 11.00.50727.1
Copyright (C) Microsoft Corporation. All rights reserved.
D:\go20190906\src\SmallRing>Yn 1
2阶群Y_1的不变量N0=[1,1]
1 2
2 1
请按任意键继续. . .
D:\go20190906\src\SmallRing>Yn 2
8阶群Y_2的不变量N0=[1,7,0,0]
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1
请按任意键继续. . .
D:\go20190906\src\SmallRing>Yn 3
18阶群Y_3的不变量N0=[1,9,8,0,0,0]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
2 1 6 5 4 3 14 13 18 17 16 15 8 7 12 11 10 9
3 4 5 6 1 2 9 10 11 12 7 8 15 16 17 18 13 14
4 3 2 1 6 5 16 15 14 13 18 17 10 9 8 7 12 11
5 6 1 2 3 4 11 12 7 8 9 10 17 18 13 14 15 16
6 5 4 3 2 1 18 17 16 15 14 13 12 11 10 9 8 7
7 8 9 10 11 12 13 14 15 16 17 18 1 2 3 4 5 6
8 7 12 11 10 9 2 1 6 5 4 3 14 13 18 17 16 15
9 10 11 12 7 8 15 16 17 18 13 14 3 4 5 6 1 2
10 9 8 7 12 11 4 3 2 1 6 5 16 15 14 13 18 17
11 12 7 8 9 10 17 18 13 14 15 16 5 6 1 2 3 4
12 11 10 9 8 7 6 5 4 3 2 1 18 17 16 15 14 13
13 14 15 16 17 18 1 2 3 4 5 6 7 8 9 10 11 12
14 13 18 17 16 15 8 7 12 11 10 9 2 1 6 5 4 3
15 16 17 18 13 14 3 4 5 6 1 2 9 10 11 12 7 8
16 15 14 13 18 17 10 9 8 7 12 11 4 3 2 1 6 5
17 18 13 14 15 16 5 6 1 2 3 4 11 12 7 8 9 10
18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
请按任意键继续. . .
D:\go20190906\src\SmallRing>Yn 4
32阶群Y_4的不变量N0=[1,19,12,0,0,0]
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
2 1 8 7 6 5 4 3 26 25 32 31 30 29 28 27 18 17 24 23 22 21 20 19 10 9 16 15 14 13 12 11
3 4 5 6 7 8 1 2 11 12 13 14 15 16 9 10 19 20 21 22 23 24 17 18 27 28 29 30 31 32 25 26
4 3 2 1 8 7 6 5 28 27 26 25 32 31 30 29 20 19 18 17 24 23 22 21 12 11 10 9 16 15 14 13
5 6 7 8 1 2 3 4 13 14 15 16 9 10 11 12 21 22 23 24 17 18 19 20 29 30 31 32 25 26 27 28
6 5 4 3 2 1 8 7 30 29 28 27 26 25 32 31 22 21 20 19 18 17 24 23 14 13 12 11 10 9 16 15
7 8 1 2 3 4 5 6 15 16 9 10 11 12 13 14 23 24 17 18 19 20 21 22 31 32 25 26 27 28 29 30
8 7 6 5 4 3 2 1 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1 2 3 4 5 6 7 8
10 9 16 15 14 13 12 11 2 1 8 7 6 5 4 3 26 25 32 31 30 29 28 27 18 17 24 23 22 21 20 19
11 12 13 14 15 16 9 10 19 20 21 22 23 24 17 18 27 28 29 30 31 32 25 26 3 4 5 6 7 8 1 2
12 11 10 9 16 15 14 13 4 3 2 1 8 7 6 5 28 27 26 25 32 31 30 29 20 19 18 17 24 23 22 21
13 14 15 16 9 10 11 12 21 22 23 24 17 18 19 20 29 30 31 32 25 26 27 28 5 6 7 8 1 2 3 4
14 13 12 11 10 9 16 15 6 5 4 3 2 1 8 7 30 29 28 27 26 25 32 31 22 21 20 19 18 17 24 23
15 16 9 10 11 12 13 14 23 24 17 18 19 20 21 22 31 32 25 26 27 28 29 30 7 8 1 2 3 4 5 6
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
18 17 24 23 22 21 20 19 10 9 16 15 14 13 12 11 2 1 8 7 6 5 4 3 26 25 32 31 30 29 28 27
19 20 21 22 23 24 17 18 27 28 29 30 31 32 25 26 3 4 5 6 7 8 1 2 11 12 13 14 15 16 9 10
20 19 18 17 24 23 22 21 12 11 10 9 16 15 14 13 4 3 2 1 8 7 6 5 28 27 26 25 32 31 30 29
21 22 23 24 17 18 19 20 29 30 31 32 25 26 27 28 5 6 7 8 1 2 3 4 13 14 15 16 9 10 11 12
22 21 20 19 18 17 24 23 14 13 12 11 10 9 16 15 6 5 4 3 2 1 8 7 30 29 28 27 26 25 32 31
23 24 17 18 19 20 21 22 31 32 25 26 27 28 29 30 7 8 1 2 3 4 5 6 15 16 9 10 11 12 13 14
24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 32 31 30 29 28 27 26 25
25 26 27 28 29 30 31 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
26 25 32 31 30 29 28 27 18 17 24 23 22 21 20 19 10 9 16 15 14 13 12 11 2 1 8 7 6 5 4 3
27 28 29 30 31 32 25 26 3 4 5 6 7 8 1 2 11 12 13 14 15 16 9 10 19 20 21 22 23 24 17 18
28 27 26 25 32 31 30 29 20 19 18 17 24 23 22 21 12 11 10 9 16 15 14 13 4 3 2 1 8 7 6 5
29 30 31 32 25 26 27 28 5 6 7 8 1 2 3 4 13 14 15 16 9 10 11 12 21 22 23 24 17 18 19 20
30 29 28 27 26 25 32 31 22 21 20 19 18 17 24 23 14 13 12 11 10 9 16 15 6 5 4 3 2 1 8 7
31 32 25 26 27 28 29 30 7 8 1 2 3 4 5 6 15 16 9 10 11 12 13 14 23 24 17 18 19 20 21 22
32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
请按任意键继续. . .
D:\go20190906\src\SmallRing>Yn 5
50阶群Y_5的不变量N0=[1,25,24,0,0,0]
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
2 1 10 9 8 7 6 5 4 3 42 41 50 49 48 47 46 45 44 43 32 31 40 39 38 37 36 35 34 33 22 21 30 29 28 27 26 25 24 23 12 11 20
19 18 17 16 15 14 13
3 4 5 6 7 8 9 10 1 2 13 14 15 16 17 18 19 20 11 12 23 24 25 26 27 28 29 30 21 22 33 34 35 36 37 38 39 40 31 32 43 44 45
46 47 48 49 50 41 42
4 3 2 1 10 9 8 7 6 5 44 43 42 41 50 49 48 47 46 45 34 33 32 31 40 39 38 37 36 35 24 23 22 21 30 29 28 27 26 25 14 13 12
11 20 19 18 17 16 15
5 6 7 8 9 10 1 2 3 4 15 16 17 18 19 20 11 12 13 14 25 26 27 28 29 30 21 22 23 24 35 36 37 38 39 40 31 32 33 34 45 46 47
48 49 50 41 42 43 44
6 5 4 3 2 1 10 9 8 7 46 45 44 43 42 41 50 49 48 47 36 35 34 33 32 31 40 39 38 37 26 25 24 23 22 21 30 29 28 27 16 15 14
13 12 11 20 19 18 17
7 8 9 10 1 2 3 4 5 6 17 18 19 20 11 12 13 14 15 16 27 28 29 30 21 22 23 24 25 26 37 38 39 40 31 32 33 34 35 36 47 48 49
50 41 42 43 44 45 46
8 7 6 5 4 3 2 1 10 9 48 47 46 45 44 43 42 41 50 49 38 37 36 35 34 33 32 31 40 39 28 27 26 25 24 23 22 21 30 29 18 17 16
15 14 13 12 11 20 19
9 10 1 2 3 4 5 6 7 8 19 20 11 12 13 14 15 16 17 18 29 30 21 22 23 24 25 26 27 28 39 40 31 32 33 34 35 36 37 38 49 50 41
42 43 44 45 46 47 48
10 9 8 7 6 5 4 3 2 1 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18
17 16 15 14 13 12 11
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
1 2 3 4 5 6 7 8 9 10
12 11 20 19 18 17 16 15 14 13 2 1 10 9 8 7 6 5 4 3 42 41 50 49 48 47 46 45 44 43 32 31 40 39 38 37 36 35 34 33 22 21 30
29 28 27 26 25 24 23
13 14 15 16 17 18 19 20 11 12 23 24 25 26 27 28 29 30 21 22 33 34 35 36 37 38 39 40 31 32 43 44 45 46 47 48 49 50 41 42
3 4 5 6 7 8 9 10 1 2
14 13 12 11 20 19 18 17 16 15 4 3 2 1 10 9 8 7 6 5 44 43 42 41 50 49 48 47 46 45 34 33 32 31 40 39 38 37 36 35 24 23 22
21 30 29 28 27 26 25
15 16 17 18 19 20 11 12 13 14 25 26 27 28 29 30 21 22 23 24 35 36 37 38 39 40 31 32 33 34 45 46 47 48 49 50 41 42 43 44
5 6 7 8 9 10 1 2 3 4
16 15 14 13 12 11 20 19 18 17 6 5 4 3 2 1 10 9 8 7 46 45 44 43 42 41 50 49 48 47 36 35 34 33 32 31 40 39 38 37 26 25 24
23 22 21 30 29 28 27
17 18 19 20 11 12 13 14 15 16 27 28 29 30 21 22 23 24 25 26 37 38 39 40 31 32 33 34 35 36 47 48 49 50 41 42 43 44 45 46
7 8 9 10 1 2 3 4 5 6
18 17 16 15 14 13 12 11 20 19 8 7 6 5 4 3 2 1 10 9 48 47 46 45 44 43 42 41 50 49 38 37 36 35 34 33 32 31 40 39 28 27 26
25 24 23 22 21 30 29
19 20 11 12 13 14 15 16 17 18 29 30 21 22 23 24 25 26 27 28 39 40 31 32 33 34 35 36 37 38 49 50 41 42 43 44 45 46 47 48
9 10 1 2 3 4 5 6 7 8
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28
27 26 25 24 23 22 21
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 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20
22 21 30 29 28 27 26 25 24 23 12 11 20 19 18 17 16 15 14 13 2 1 10 9 8 7 6 5 4 3 42 41 50 49 48 47 46 45 44 43 32 31 40
39 38 37 36 35 34 33
23 24 25 26 27 28 29 30 21 22 33 34 35 36 37 38 39 40 31 32 43 44 45 46 47 48 49 50 41 42 3 4 5 6 7 8 9 10 1 2 13 14 15
16 17 18 19 20 11 12
24 23 22 21 30 29 28 27 26 25 14 13 12 11 20 19 18 17 16 15 4 3 2 1 10 9 8 7 6 5 44 43 42 41 50 49 48 47 46 45 34 33 32
31 40 39 38 37 36 35
25 26 27 28 29 30 21 22 23 24 35 36 37 38 39 40 31 32 33 34 45 46 47 48 49 50 41 42 43 44 5 6 7 8 9 10 1 2 3 4 15 16 17
18 19 20 11 12 13 14
26 25 24 23 22 21 30 29 28 27 16 15 14 13 12 11 20 19 18 17 6 5 4 3 2 1 10 9 8 7 46 45 44 43 42 41 50 49 48 47 36 35 34
33 32 31 40 39 38 37
27 28 29 30 21 22 23 24 25 26 37 38 39 40 31 32 33 34 35 36 47 48 49 50 41 42 43 44 45 46 7 8 9 10 1 2 3 4 5 6 17 18 19
20 11 12 13 14 15 16
28 27 26 25 24 23 22 21 30 29 18 17 16 15 14 13 12 11 20 19 8 7 6 5 4 3 2 1 10 9 48 47 46 45 44 43 42 41 50 49 38 37 36
35 34 33 32 31 40 39
29 30 21 22 23 24 25 26 27 28 39 40 31 32 33 34 35 36 37 38 49 50 41 42 43 44 45 46 47 48 9 10 1 2 3 4 5 6 7 8 19 20 11
12 13 14 15 16 17 18
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 50 49 48 47 46 45 44 43 42 41 40 39 38
37 36 35 34 33 32 31
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 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
32 31 40 39 38 37 36 35 34 33 22 21 30 29 28 27 26 25 24 23 12 11 20 19 18 17 16 15 14 13 2 1 10 9 8 7 6 5 4 3 42 41 50
49 48 47 46 45 44 43
33 34 35 36 37 38 39 40 31 32 43 44 45 46 47 48 49 50 41 42 3 4 5 6 7 8 9 10 1 2 13 14 15 16 17 18 19 20 11 12 23 24 25
26 27 28 29 30 21 22
34 33 32 31 40 39 38 37 36 35 24 23 22 21 30 29 28 27 26 25 14 13 12 11 20 19 18 17 16 15 4 3 2 1 10 9 8 7 6 5 44 43 42
41 50 49 48 47 46 45
35 36 37 38 39 40 31 32 33 34 45 46 47 48 49 50 41 42 43 44 5 6 7 8 9 10 1 2 3 4 15 16 17 18 19 20 11 12 13 14 25 26 27
28 29 30 21 22 23 24
36 35 34 33 32 31 40 39 38 37 26 25 24 23 22 21 30 29 28 27 16 15 14 13 12 11 20 19 18 17 6 5 4 3 2 1 10 9 8 7 46 45 44
43 42 41 50 49 48 47
37 38 39 40 31 32 33 34 35 36 47 48 49 50 41 42 43 44 45 46 7 8 9 10 1 2 3 4 5 6 17 18 19 20 11 12 13 14 15 16 27 28 29
30 21 22 23 24 25 26
38 37 36 35 34 33 32 31 40 39 28 27 26 25 24 23 22 21 30 29 18 17 16 15 14 13 12 11 20 19 8 7 6 5 4 3 2 1 10 9 48 47 46
45 44 43 42 41 50 49
39 40 31 32 33 34 35 36 37 38 49 50 41 42 43 44 45 46 47 48 9 10 1 2 3 4 5 6 7 8 19 20 11 12 13 14 15 16 17 18 29 30 21
22 23 24 25 26 27 28
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 50 49 48
47 46 45 44 43 42 41
41 42 43 44 45 46 47 48 49 50 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
42 41 50 49 48 47 46 45 44 43 32 31 40 39 38 37 36 35 34 33 22 21 30 29 28 27 26 25 24 23 12 11 20 19 18 17 16 15 14 13
2 1 10 9 8 7 6 5 4 3
43 44 45 46 47 48 49 50 41 42 3 4 5 6 7 8 9 10 1 2 13 14 15 16 17 18 19 20 11 12 23 24 25 26 27 28 29 30 21 22 33 34 35
36 37 38 39 40 31 32
44 43 42 41 50 49 48 47 46 45 34 33 32 31 40 39 38 37 36 35 24 23 22 21 30 29 28 27 26 25 14 13 12 11 20 19 18 17 16 15
4 3 2 1 10 9 8 7 6 5
45 46 47 48 49 50 41 42 43 44 5 6 7 8 9 10 1 2 3 4 15 16 17 18 19 20 11 12 13 14 25 26 27 28 29 30 21 22 23 24 35 36 37
38 39 40 31 32 33 34
46 45 44 43 42 41 50 49 48 47 36 35 34 33 32 31 40 39 38 37 26 25 24 23 22 21 30 29 28 27 16 15 14 13 12 11 20 19 18 17
6 5 4 3 2 1 10 9 8 7
47 48 49 50 41 42 43 44 45 46 7 8 9 10 1 2 3 4 5 6 17 18 19 20 11 12 13 14 15 16 27 28 29 30 21 22 23 24 25 26 37 38 39
40 31 32 33 34 35 36
48 47 46 45 44 43 42 41 50 49 38 37 36 35 34 33 32 31 40 39 28 27 26 25 24 23 22 21 30 29 18 17 16 15 14 13 12 11 20 19
8 7 6 5 4 3 2 1 10 9
49 50 41 42 43 44 45 46 47 48 9 10 1 2 3 4 5 6 7 8 19 20 11 12 13 14 15 16 17 18 29 30 21 22 23 24 25 26 27 28 39 40 31
32 33 34 35 36 37 38
50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11
10 9 8 7 6 5 4 3 2 1
// 生成2*n*n阶群Y_n=(C_n×C_n):C_2的凯莱表Yn.exe
#include
#include
#include
using namespace std;
vector
{
vector
for(int i=0;i
for(int j=0;j
ret[i][j]=(i+j)%n+1;
}
}
return ret;
}
vector
{
vector
int illegal=-1;
ret[1]=mtx.size();
if(ret[1]==0)
{
ret[0]=illegal;//不是合法矩阵
return ret;
}
ret[2]=mtx[0].size();
if(ret[2]==0)
{
ret[0]=illegal;//不是合法矩阵
return ret;
}
for(int i=1;i
if(mtx[i].size()!=ret[2])
{
ret[0]=illegal;//不是合法矩阵
return ret;
}
}
ret[0]=0;//是合法矩阵
return ret;
}
vector
{
vector
vector
if(AFlag[0]==-1)
return C;
vector
if(BFlag[0]==-1)
return C;
int nB=BFlag[1];
int n=AFlag[1]*BFlag[1];
for(int a=0;a
vector
for(int b=0;b
int aj=a%nB;
int ai=a/nB;
int bj=b%nB;
int bi=b/nB;
int i=A[ai][bi]-1;
int j=B[aj][bj]-1;
int c=nB*i+j+1;
iRow.push_back(c);
}
C.push_back(iRow);
}
return C;
}
// 半直积群G:C2
vector
{
vector
vector
if(AFlag[0]==-1)
return C;
vector
vector
v1.push_back(1);
v1.push_back(2);
vector
v2.push_back(2);
v2.push_back(1);
B.push_back(v1);
B.push_back(v2);
vector
if(BFlag[0]==-1)
return C;
int nB=BFlag[1];
int n=AFlag[1]*BFlag[1];
for(int a=0;a
vector
for(int b=0;b
int aj=a%nB;
int ai=a/nB;
int bj=b%nB;
int bi=b/nB;
int bii=bi;
//aj不是C_2={0,1}的单位元0
if(aj==1)
{
for(int ii=0;ii
if(A[bi][ii]==1)
{
bii=ii;
break;
}
}
}
int i=A[ai][bii]-1;
int j=B[aj][bj]-1;
int c=nB*i+j+1;
iRow.push_back(c);
}
C.push_back(iRow);
}
return C;
}
vector
{
vector
if(n<1)
return ret;
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
ret.push_back(i);
}
}
return ret;
}
// 未知n阶群的群元的阶
int getGnEOrder(const vector
{
vector
if(AFlag[0]==-1)
return -1;
int n=AFlag[1];
if(a<0||a>=n)
return -1;
int t=0;
for(int i=1;i<=n;i++)
{
t=A[t][a]-1;
if(t==0)
return i;
}
return -1;
}
string calN0(const vector
{
int n=A.size();
vector
vector
for(int i=0;i
int ord=getGnEOrder(A,i);
vCounts[ord]=vCounts[ord]+1;
}
string str="[";
for(int i=0;i
char sz[40]={0};
sprintf(sz,"%d",vCounts[vOrders[i]]);
str+=sz;
if(i
}
str+="]";
return str;
}
int main(int argc, char **argv)
{
char sz[100]={0};
if(argc<2)
{
printf("请输入n:");
scanf("%s",sz);
}
else
strcpy(sz,argv[1]);
int n=atoi(sz);
char sz1[100]={0};
sprintf(sz1,"Y%d.txt",n);
vector
vector
int m=Yn.size();
string N0=calN0(Yn);
printf("%d阶群Y_%d的不变量N0=%s\n",m,n,N0.c_str());
// 生成Y_n的凯莱表
FILE *fp=fopen(sz1,"w");
for(int i=0;i
for(int j=0;j
#ifdef PRINT_STDOUT
printf("%d ",Yn[i][j]);
#endif
fprintf(fp,"%d ",Yn[i][j]);
}
#ifdef PRINT_STDOUT
printf("\n");
#endif
fprintf(fp,"\n");
}
fclose(fp);
system("pause");
return 0;
}