有限环Z[i]/(m+ni)的结构分析(Lua版本)

纵然是瞬间 提交于 2020-03-26 08:18:49

20200325:
R8_22的表示找到了,所以还剩下14种8阶环的表示没找到。
root@ubuntu:/home/cpptest/lua# ./luatest GaussianIntegers.lua
z1=9+11i
z2=56+3i
z1+z2=65+14i
z1-z2=-47+8i
z1*z2=471+643i
z1/z2=0+0i
false    0+0i    7+5i
0-1i    0-1i    -1-9i    -1+4i
4+7i    4+7i    -1-6i    5-5i
0,1,2,4,5,8,9,10,13,16,17,18,20,25,26,29,32,34,36,37,40,41,45,49,50,52,53,58,61,64,65,68,72,73,74,80,81,82,85,89,90,97,98,100,101,104,106,109,113,116,117,125,128,130,136,145,149,162,164,181,200,
0,1,2,4,5,8,9,10,13,16,17,18,20,25,26,29,32,34,36,37,40,41,45,49,50,52,53,58,61,64,65,68,72,73,74,80,81,82,85,89,90,97,98,100,101,104,106,109,113,116,117,121,122,125,128,130,136,137,144,145,146,148,149,153,157,160,162,164,169,170,173,178,180,181,185,193,194,196,197,200,
Z[i]/(2)是4阶环={0,1,i,1+i}:
[R4Add]
1 2 3 4 
2 1 4 3 
3 4 1 2 
4 3 2 1 
[R4Mul]
1 1 1 1 
1 2 3 4 
1 3 2 4 
1 4 4 1 
Z[i]/(2+2i)是8阶环={0,1,2,3,i,1+i,2+i,3+i}:
[R8Add]
1 2 3 4 5 6 7 8 
2 3 4 1 6 7 8 5 
3 4 1 2 7 8 5 6 
4 1 2 3 8 5 6 7 
5 6 7 8 3 4 1 2 
6 7 8 5 4 1 2 3 
7 8 5 6 1 2 3 4 
8 5 6 7 2 3 4 1 
[R8Mul]
1 1 1 1 1 1 1 1 
1 2 3 4 5 6 7 8 
1 3 1 3 3 1 3 1 
1 4 3 2 7 6 5 8 
1 5 3 7 4 8 2 6 
1 6 1 6 8 3 8 3 
1 7 3 5 2 8 4 6 
1 8 1 8 6 3 6 3 
Z[i]/(3+6i)是45阶环={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,i,1+i,2+i,3+i,4+i,5+i,6+i,7+i,8+i,9+i,10+i,11+i,12+i,13+i,14+i,2+2i,3+2i,4+2i,5+2i,6+2i,7+2i,8+2i,9+2i,10+2i,11+2i,12+2i,13+2i,14+2i}:
[R45Add]
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 
2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 17 18 19 20 21 22 23 24 25 26 27 28 29 30 16 32 33 34 35 36 37 38 39 40 41 42 43 44 45 31 
3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 18 19 20 21 22 23 24 25 26 27 28 29 30 16 17 33 34 35 36 37 38 39 40 41 42 43 44 45 31 32 
4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 19 20 21 22 23 24 25 26 27 28 29 30 16 17 18 34 35 36 37 38 39 40 41 42 43 44 45 31 32 33 
5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 20 21 22 23 24 25 26 27 28 29 30 16 17 18 19 35 36 37 38 39 40 41 42 43 44 45 31 32 33 34 
6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 21 22 23 24 25 26 27 28 29 30 16 17 18 19 20 36 37 38 39 40 41 42 43 44 45 31 32 33 34 35 
7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 22 23 24 25 26 27 28 29 30 16 17 18 19 20 21 37 38 39 40 41 42 43 44 45 31 32 33 34 35 36 
8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 23 24 25 26 27 28 29 30 16 17 18 19 20 21 22 38 39 40 41 42 43 44 45 31 32 33 34 35 36 37 
9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 24 25 26 27 28 29 30 16 17 18 19 20 21 22 23 39 40 41 42 43 44 45 31 32 33 34 35 36 37 38 
10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 25 26 27 28 29 30 16 17 18 19 20 21 22 23 24 40 41 42 43 44 45 31 32 33 34 35 36 37 38 39 
11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 26 27 28 29 30 16 17 18 19 20 21 22 23 24 25 41 42 43 44 45 31 32 33 34 35 36 37 38 39 40 
12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 27 28 29 30 16 17 18 19 20 21 22 23 24 25 26 42 43 44 45 31 32 33 34 35 36 37 38 39 40 41 
13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 28 29 30 16 17 18 19 20 21 22 23 24 25 26 27 43 44 45 31 32 33 34 35 36 37 38 39 40 41 42 
14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 29 30 16 17 18 19 20 21 22 23 24 25 26 27 28 44 45 31 32 33 34 35 36 37 38 39 40 41 42 43 
15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 30 16 17 18 19 20 21 22 23 24 25 26 27 28 29 45 31 32 33 34 35 36 37 38 39 40 41 42 43 44 
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 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 16 32 33 34 35 36 37 38 39 40 41 42 43 44 45 31 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 
18 19 20 21 22 23 24 25 26 27 28 29 30 16 17 33 34 35 36 37 38 39 40 41 42 43 44 45 31 32 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 
19 20 21 22 23 24 25 26 27 28 29 30 16 17 18 34 35 36 37 38 39 40 41 42 43 44 45 31 32 33 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 
20 21 22 23 24 25 26 27 28 29 30 16 17 18 19 35 36 37 38 39 40 41 42 43 44 45 31 32 33 34 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 
21 22 23 24 25 26 27 28 29 30 16 17 18 19 20 36 37 38 39 40 41 42 43 44 45 31 32 33 34 35 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 
22 23 24 25 26 27 28 29 30 16 17 18 19 20 21 37 38 39 40 41 42 43 44 45 31 32 33 34 35 36 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 
23 24 25 26 27 28 29 30 16 17 18 19 20 21 22 38 39 40 41 42 43 44 45 31 32 33 34 35 36 37 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 
24 25 26 27 28 29 30 16 17 18 19 20 21 22 23 39 40 41 42 43 44 45 31 32 33 34 35 36 37 38 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 
25 26 27 28 29 30 16 17 18 19 20 21 22 23 24 40 41 42 43 44 45 31 32 33 34 35 36 37 38 39 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
26 27 28 29 30 16 17 18 19 20 21 22 23 24 25 41 42 43 44 45 31 32 33 34 35 36 37 38 39 40 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 
27 28 29 30 16 17 18 19 20 21 22 23 24 25 26 42 43 44 45 31 32 33 34 35 36 37 38 39 40 41 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 
28 29 30 16 17 18 19 20 21 22 23 24 25 26 27 43 44 45 31 32 33 34 35 36 37 38 39 40 41 42 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 
29 30 16 17 18 19 20 21 22 23 24 25 26 27 28 44 45 31 32 33 34 35 36 37 38 39 40 41 42 43 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 
30 16 17 18 19 20 21 22 23 24 25 26 27 28 29 45 31 32 33 34 35 36 37 38 39 40 41 42 43 44 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 7 8 9 10 11 12 13 14 15 1 2 3 4 5 6 22 23 24 25 26 27 28 29 30 16 17 18 19 20 21 
32 33 34 35 36 37 38 39 40 41 42 43 44 45 31 8 9 10 11 12 13 14 15 1 2 3 4 5 6 7 23 24 25 26 27 28 29 30 16 17 18 19 20 21 22 
33 34 35 36 37 38 39 40 41 42 43 44 45 31 32 9 10 11 12 13 14 15 1 2 3 4 5 6 7 8 24 25 26 27 28 29 30 16 17 18 19 20 21 22 23 
34 35 36 37 38 39 40 41 42 43 44 45 31 32 33 10 11 12 13 14 15 1 2 3 4 5 6 7 8 9 25 26 27 28 29 30 16 17 18 19 20 21 22 23 24 
35 36 37 38 39 40 41 42 43 44 45 31 32 33 34 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 26 27 28 29 30 16 17 18 19 20 21 22 23 24 25 
36 37 38 39 40 41 42 43 44 45 31 32 33 34 35 12 13 14 15 1 2 3 4 5 6 7 8 9 10 11 27 28 29 30 16 17 18 19 20 21 22 23 24 25 26 
37 38 39 40 41 42 43 44 45 31 32 33 34 35 36 13 14 15 1 2 3 4 5 6 7 8 9 10 11 12 28 29 30 16 17 18 19 20 21 22 23 24 25 26 27 
38 39 40 41 42 43 44 45 31 32 33 34 35 36 37 14 15 1 2 3 4 5 6 7 8 9 10 11 12 13 29 30 16 17 18 19 20 21 22 23 24 25 26 27 28 
39 40 41 42 43 44 45 31 32 33 34 35 36 37 38 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 30 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
40 41 42 43 44 45 31 32 33 34 35 36 37 38 39 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 
41 42 43 44 45 31 32 33 34 35 36 37 38 39 40 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 17 18 19 20 21 22 23 24 25 26 27 28 29 30 16 
42 43 44 45 31 32 33 34 35 36 37 38 39 40 41 3 4 5 6 7 8 9 10 11 12 13 14 15 1 2 18 19 20 21 22 23 24 25 26 27 28 29 30 16 17 
43 44 45 31 32 33 34 35 36 37 38 39 40 41 42 4 5 6 7 8 9 10 11 12 13 14 15 1 2 3 19 20 21 22 23 24 25 26 27 28 29 30 16 17 18 
44 45 31 32 33 34 35 36 37 38 39 40 41 42 43 5 6 7 8 9 10 11 12 13 14 15 1 2 3 4 20 21 22 23 24 25 26 27 28 29 30 16 17 18 19 
45 31 32 33 34 35 36 37 38 39 40 41 42 43 44 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 21 22 23 24 25 26 27 28 29 30 16 17 18 19 20 
[R45Mul]
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
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 
1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 31 33 35 37 39 41 43 45 32 34 36 38 40 42 44 22 24 26 28 30 17 19 21 23 25 27 29 16 18 20 
1 4 7 10 13 1 4 7 10 13 1 4 7 10 13 7 10 13 1 4 7 10 13 1 4 7 10 13 1 4 13 1 4 7 10 13 1 4 7 10 13 1 4 7 10 
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 22 26 30 19 23 27 16 20 24 28 17 21 25 29 18 43 32 36 40 44 33 37 41 45 34 38 42 31 35 39 
1 6 11 1 6 11 1 6 11 1 6 11 1 6 11 37 42 32 37 42 32 37 42 32 37 42 32 37 42 32 19 24 29 19 24 29 19 24 29 19 24 29 19 24 29 
1 7 13 4 10 1 7 13 4 10 1 7 13 4 10 13 4 10 1 7 13 4 10 1 7 13 4 10 1 7 10 1 7 13 4 10 1 7 13 4 10 1 7 13 4 
1 8 15 7 14 6 13 5 12 4 11 3 10 2 9 28 20 27 19 26 18 25 17 24 16 23 30 22 29 21 40 32 39 31 38 45 37 44 36 43 35 42 34 41 33 
1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 43 36 44 37 45 38 31 39 32 40 33 41 34 42 35 16 24 17 25 18 26 19 27 20 28 21 29 22 30 23 
1 10 4 13 7 1 10 4 13 7 1 10 4 13 7 4 13 7 1 10 4 13 7 1 10 4 13 7 1 10 7 1 10 4 13 7 1 10 4 13 7 1 10 4 13 
1 11 6 1 11 6 1 11 6 1 11 6 1 11 6 19 29 24 19 29 24 19 29 24 19 29 24 19 29 24 37 32 42 37 32 42 37 32 42 37 32 42 37 32 42 
1 12 8 4 15 11 7 3 14 10 6 2 13 9 5 34 45 41 37 33 44 40 36 32 43 39 35 31 42 38 28 24 20 16 27 23 19 30 26 22 18 29 25 21 17 
1 13 10 7 4 1 13 10 7 4 1 13 10 7 4 10 7 4 1 13 10 7 4 1 13 10 7 4 1 13 4 1 13 10 7 4 1 13 10 7 4 1 13 10 7 
1 14 12 10 8 6 4 2 15 13 11 9 7 5 3 25 23 21 19 17 30 28 26 24 22 20 18 16 29 27 34 32 45 43 41 39 37 35 33 31 44 42 40 38 36 
1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 40 39 38 37 36 35 34 33 32 31 45 44 43 42 41 25 24 23 22 21 20 19 18 17 16 30 29 28 27 26 
1 16 31 7 22 37 13 28 43 4 19 34 10 25 40 15 30 45 6 21 36 12 27 42 3 18 33 9 24 39 14 29 44 5 20 35 11 26 41 2 17 32 8 23 38 
1 17 33 10 26 42 4 20 36 13 29 45 7 23 39 30 31 8 24 40 2 18 34 11 27 43 5 21 37 14 44 6 22 38 15 16 32 9 25 41 3 19 35 12 28 
1 18 35 13 30 32 10 27 44 7 24 41 4 21 38 45 8 25 42 5 22 39 2 19 36 14 16 33 11 28 20 37 15 17 34 12 29 31 9 26 43 6 23 40 3 
1 19 37 1 19 37 1 19 37 1 19 37 1 19 37 6 24 42 6 24 42 6 24 42 6 24 42 6 24 42 11 29 32 11 29 32 11 29 32 11 29 32 11 29 32 
1 20 39 4 23 42 7 26 45 10 29 33 13 17 36 21 40 5 24 43 8 27 31 11 30 34 14 18 37 2 41 6 25 44 9 28 32 12 16 35 15 19 38 3 22 
1 21 41 7 27 32 13 18 38 4 24 44 10 30 35 36 2 22 42 8 28 33 14 19 39 5 25 45 11 16 17 37 3 23 43 9 29 34 15 20 40 6 26 31 12 
1 22 43 10 16 37 4 25 31 13 19 40 7 28 34 12 18 39 6 27 33 15 21 42 9 30 36 3 24 45 8 29 35 2 23 44 11 17 38 5 26 32 14 20 41 
1 23 45 13 20 42 10 17 39 7 29 36 4 26 33 27 34 2 24 31 14 21 43 11 18 40 8 30 37 5 38 6 28 35 3 25 32 15 22 44 12 19 41 9 16 
1 24 32 1 24 32 1 24 32 1 24 32 1 24 32 42 11 19 42 11 19 42 11 19 42 11 19 42 11 19 29 37 6 29 37 6 29 37 6 29 37 6 29 37 6 
1 25 34 4 28 37 7 16 40 10 19 43 13 22 31 3 27 36 6 30 39 9 18 42 12 21 45 15 24 33 5 29 38 8 17 41 11 20 44 14 23 32 2 26 35 
1 26 36 7 17 42 13 23 33 4 29 39 10 20 45 18 43 14 24 34 5 30 40 11 21 31 2 27 37 8 35 6 16 41 12 22 32 3 28 38 9 19 44 15 25 
1 27 38 10 21 32 4 30 41 13 24 35 7 18 44 33 5 16 42 14 25 36 8 19 45 2 28 39 11 22 26 37 9 20 31 3 29 40 12 23 34 6 17 43 15 
1 28 40 13 25 37 10 22 34 7 19 31 4 16 43 9 21 33 6 18 45 3 30 42 15 27 39 12 24 36 2 29 41 14 26 38 11 23 35 8 20 32 5 17 44 
1 29 42 1 29 42 1 29 42 1 29 42 1 29 42 24 37 11 24 37 11 24 37 11 24 37 11 24 37 11 32 6 19 32 6 19 32 6 19 32 6 19 32 6 19 
1 30 44 4 18 32 7 21 35 10 24 38 13 27 41 39 14 28 42 2 16 45 5 19 33 8 22 36 11 25 23 37 12 26 40 15 29 43 3 17 31 6 20 34 9 
1 31 22 13 43 19 10 40 16 7 37 28 4 34 25 14 44 20 11 41 17 8 38 29 5 35 26 2 32 23 12 42 18 9 39 30 6 36 27 3 33 24 15 45 21 
1 32 24 1 32 24 1 32 24 1 32 24 1 32 24 29 6 37 29 6 37 29 6 37 29 6 37 29 6 37 42 19 11 42 19 11 42 19 11 42 19 11 42 19 11 
1 33 26 4 36 29 7 39 17 10 42 20 13 45 23 44 22 15 32 25 3 35 28 6 38 16 9 41 19 12 18 11 43 21 14 31 24 2 34 27 5 37 30 8 40 
1 34 28 7 40 19 13 31 25 4 37 16 10 43 22 5 38 17 11 44 23 2 35 29 8 41 20 14 32 26 9 42 21 15 33 27 6 39 18 12 45 24 3 36 30 
1 35 30 10 44 24 4 38 18 13 32 27 7 41 21 20 15 34 29 9 43 23 3 37 17 12 31 26 6 40 39 19 14 33 28 8 42 22 2 36 16 11 45 25 5 
1 36 17 13 33 29 10 45 26 7 42 23 4 39 20 35 16 12 32 28 9 44 25 6 41 22 3 38 19 15 30 11 31 27 8 43 24 5 40 21 2 37 18 14 34 
1 37 19 1 37 19 1 37 19 1 37 19 1 37 19 11 32 29 11 32 29 11 32 29 11 32 29 11 32 29 6 42 24 6 42 24 6 42 24 6 42 24 6 42 24 
1 38 21 4 41 24 7 44 27 10 32 30 13 35 18 26 9 31 29 12 34 17 15 37 20 3 40 23 6 43 36 19 2 39 22 5 42 25 8 45 28 11 33 16 14 
1 39 23 7 45 29 13 36 20 4 42 26 10 33 17 41 25 9 32 16 15 38 22 6 44 28 12 35 19 3 27 11 34 18 2 40 24 8 31 30 14 37 21 5 43 
1 40 25 10 34 19 4 43 28 13 37 22 7 31 16 2 41 26 11 35 20 5 44 29 14 38 23 8 32 17 3 42 27 12 36 21 6 45 30 15 39 24 9 33 18 
1 41 27 13 38 24 10 35 21 7 32 18 4 44 30 17 3 43 29 15 40 26 12 37 23 9 34 20 6 31 33 19 5 45 16 2 42 28 14 39 25 11 36 22 8 
1 42 29 1 42 29 1 42 29 1 42 29 1 42 29 32 19 6 32 19 6 32 19 6 32 19 6 32 19 6 24 11 37 24 11 37 24 11 37 24 11 37 24 11 37 
1 43 16 4 31 19 7 34 22 10 37 25 13 40 28 8 35 23 11 38 26 14 41 29 2 44 17 5 32 20 15 42 30 3 45 18 6 33 21 9 36 24 12 39 27 
1 44 18 7 35 24 13 41 30 4 32 21 10 38 27 23 12 40 29 3 31 20 9 37 26 15 43 17 6 34 45 19 8 36 25 14 42 16 5 33 22 11 39 28 2 
1 45 20 10 39 29 4 33 23 13 42 17 7 36 26 38 28 3 32 22 12 41 16 6 35 25 15 44 19 9 21 11 40 30 5 34 24 14 43 18 8 37 27 2 31 

root@ubuntu:/home/hanxiaohua/work1/MathTool/gaptool# ./calR R45.txt
G45ElementToOrder(0)=1
G45ElementToOrder(1)=15
G45ElementToOrder(2)=15
G45ElementToOrder(3)=5
G45ElementToOrder(4)=15
G45ElementToOrder(5)=3
G45ElementToOrder(6)=5
G45ElementToOrder(7)=15
G45ElementToOrder(8)=15
G45ElementToOrder(9)=5
G45ElementToOrder(10)=3
G45ElementToOrder(11)=15
G45ElementToOrder(12)=5
G45ElementToOrder(13)=15
G45ElementToOrder(14)=15
G45ElementToOrder(15)=15
G45ElementToOrder(16)=15
G45ElementToOrder(17)=15
G45ElementToOrder(18)=3
G45ElementToOrder(19)=15
G45ElementToOrder(20)=15
G45ElementToOrder(21)=15
G45ElementToOrder(22)=15
G45ElementToOrder(23)=3
G45ElementToOrder(24)=15
G45ElementToOrder(25)=15
G45ElementToOrder(26)=15
G45ElementToOrder(27)=15
G45ElementToOrder(28)=3
G45ElementToOrder(29)=15
G45ElementToOrder(30)=15
G45ElementToOrder(31)=3
G45ElementToOrder(32)=15
G45ElementToOrder(33)=15
G45ElementToOrder(34)=15
G45ElementToOrder(35)=15
G45ElementToOrder(36)=3
G45ElementToOrder(37)=15
G45ElementToOrder(38)=15
G45ElementToOrder(39)=15
G45ElementToOrder(40)=15
G45ElementToOrder(41)=3
G45ElementToOrder(42)=15
G45ElementToOrder(43)=15
G45ElementToOrder(44)=15
R45有1个1阶元,8个3阶元,4个5阶元,0个9阶元,32个15阶元,0个45阶元
环的结构不变量n0,bA,bO,n1,n2,n4,n5,n6,n7,n8=15,1,1,13,4,0,0,153,12,45
交换,幺环,不可逆元个数n1=13,幂等元个数n2=4,2次幂零元个数n4=0,2~3次幂零元个数n5=0,零乘个数n6=153,零因子个数n7=12,中心大小n8=45,
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 
分析环的结构完毕!
function gAdd(z1,z2)
local z3 = {}
z3[1]=z1[1]+z2[1]
z3[2]=z1[2]+z2[2]
return z3
end

function gSub(z1,z2)
local z3 = {}
z3[1]=z1[1]-z2[1]
z3[2]=z1[2]-z2[2]
return z3
end

function gMul(z1,z2)
local z3 = {}
z3[1]=z1[1]*z2[1]-z1[2]*z2[2]
z3[2]=z1[1]*z2[2]+z1[2]*z2[1]
return z3
end

function gStr(z)
local s
if z[2]>=0 then
s=z[1].."+"..z[2].."i"
else
s=z[1]..z[2].."i"
end
return s
end

function Norm(z)
 return (z[1]*z[1]+z[2]*z[2])
end

function ocdiv(a,b,c,d) 
    local e,f,p,q,s,w;
    p=a*c;
    q=-b*d;
    s=(a+b)*(c-d);
    w=c*c+d*d;
    if(w+1.0==1.0)then 
        e=1.0e+35*a/math.abs(a)
        f=1.0e+35*b/math.abs(b)
    else
        e=(p-q)/w
        f=(s-p-q)/w 
    end
    return e,f
end

--定义:设a,b∈M,若存在ε使b=ε(·)a,则称b是a的相伴数,记作b~a。
function IsAssociatedNumber(z1,z2)
   local E={{-1,0},{1,0},{0,1},{0,-1}}
    for k,v in ipairs(E) do
      local b=gMul(v, z1)
      if b[1]==z2[1] and b[2]==z2[2] then
          return true
      end
    end 
    return false    
end

function Div(z1,z2)
 local c={}
 local c1,c2
 c1,c2=ocdiv(z1[1],z1[2],z2[1],z2[2])
 c[1]=math.floor(c1+0.5)
 c[2]=math.floor(c2+0.5)  
 return c
end

function divide(z1,z2)
  local q=Div(z1,z2)
  local r=gSub(z1,gMul(q,z2))
  local bRet=(r[1]==0 and r[2]==0)
  return bRet,q,r
end

function gMod(z1,z2)
  local q=Div(z1,z2)
  local r=gSub(z1,gMul(q,z2))
  return r
end

function gGcd(z1,z2)
 local x = z1
 local y = z2
 if(Norm(z1)<Norm(z2))then
     x = z2
     y = z1
 end
 while (y[1]~=0 or y[2]~=0) do
  local ret,q,r=divide(x,y)
  x = y
  y = r
 end 
 return x
end

function gGcdex(z1,z2)
 local swapped = false
 local x = z1
 local y = z2
 if(Norm(z1)<Norm(z2))then
     x = z2
     y = z1
     swapped = true
 end
 local xx ={0,0}
 local lx = {1,0}
 local yy = {1,0}
 local ly = {0,0}
 while (y[1]~=0 or y[2]~=0) do
  bret,q,r=divide(x,y)
  x = y
  y = r
  local tx = gSub(lx,gMul(q,xx))
  lx = xx
  xx = tx
  local ty = gSub(ly,gMul(q,yy))
  ly = yy
  yy = ty
 end
 if swapped then
  lx,ly=ly,lx
 end
 return x,lx,ly
end

local z1={9,11}
local z2={56,3}
local z3=gAdd(z1,z2)
local z4=gSub(z1,z2)
local z5=gMul(z1,z2)
local z6=Div(z1,z2)
io.write("z1=",gStr(z1),"\n","z2=",gStr(z2),"\n")
io.write("z1+z2=",gStr(z3),"\n")
io.write("z1-z2=",gStr(z4),"\n")
io.write("z1*z2=",gStr(z5),"\n")
io.write("z1/z2=",gStr(z6),"\n")
-- print(math.floor(-4.2-0.5))
-- print(math.floor(-3.7-0.5))
-- print(math.floor(-0.5))
-- print(math.floor(0.5))
-- print(math.floor(4.2+0.5))
-- print(math.floor(3.7+0.5))
--求7+5i和18+5i的最大公因数:1=(9-i)(7+5i)+(-4-i)(18+5i)。
--求112+i和-57+79i的最大公因数:(112+i,-57+79i)=4+7i。
local ret,q,r=divide({7,5},{18,5})
print(ret,gStr(q),gStr(r))
local z7a=gGcd({7,5},{18,5})
local z7,x7,y7=gGcdex({7,5},{18,5})
print(gStr(z7a),gStr(z7),gStr(x7),gStr(y7))
local z8a=gGcd({112,1},{-57,79})
local z8,x8,y8=gGcdex({112,1},{-57,79})
print(gStr(z8a),gStr(z8),gStr(x8),gStr(y8))

function get_key(value, tbl)
    for k,v in ipairs(tbl) do
      if v == value then
          return k
      end
    end
    return -1
end

function genN(n)
    local gN={}
    for m=0,n,1 do 
        for n=0,n,1 do 
            local mn=m*m+n*n
            local k=get_key(mn, gN)
            if k==-1 then 
                table.insert(gN,mn)
            end
        end
    end
    table.sort(gN , function(a , b)
            return a < b
        end)
    for k,v in pairs(gN) do  
        io.write(v, ",")
    end
    io.write("\n")
end

--小于等于N的所有范数
function genMaxN(N)
    local gN={}
    local N1=math.ceil(math.sqrt(N))
    for m=0,N1,1 do 
        for n=0,N1,1 do 
            local mn=m*m+n*n
            local k=get_key(mn, gN)
            if k==-1 and mn<=N then 
                table.insert(gN,mn)
            end
        end
    end
    table.sort(gN , function(a , b)
            return a < b
        end)
    for k,v in pairs(gN) do  
        io.write(v, ",")
    end
    io.write("\n")
end
genN(10)
genMaxN(200)

--[[
Z[i]/(m+ni)是N(m+ni)=m^2+n^2阶有限环,完全剩余系是x_i,j=m+ni,i=0,1,…,N(m,n)/(m,n)-1,j=0,1,…,(m,n)-1。
非素理想的情形:
Z[i]/(3+6i)是45阶环={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,i,1+i,2+i,3+i,4+i,5+i,6+i,7+i,8+i,9+i,10+i,11+i,12+i,13+i,14+i,2+2i,3+2i,4+2i,5+2i,6+2i,7+2i,8+2i,9+2i,10+2i,11+2i,12+2i,13+2i,14+2i},乘法单位元群Z[i]/(3+6i)^*是φ(3+6i)=φ(3)φ(1+2i)=20阶群
Z[i]/(2+2i)是8阶环={0,1,2,3,i,1+i,2+i,3+i}
Z[i]/(2)是4阶环={0,1,i,1+i}
素理想的情形:
Z[i]/(1+i)是2阶环F_2={0,1}
Z[i]/(1+2i)是5阶环F_5={0,1,2,3,4},乘法单位元群Z[i]/(1+2i)^*是4阶群C_4={1,2,3,4}。
Z[i]/(3)是9阶环F_9={0,1,2,i,1+i,2+i,2i,1+2i,2+2i},乘法单位元群Z[i]/(3)^*是8阶群C_8={1,2,i,1+i,2+i,2i,1+2i,2+2i}。
Z[i]/(2+3i)是N(2+3i)=13阶环F_13={0,1,2,3,4,5,6,7,8,9,10,11,12},乘法单位元群Z[i]/(2+3i)^*是12阶群C_12={1,2,3,4,5,6,7,8,9,10,11,12}
]]
local function get_len(tb)
  local len = 0
  for k,v in pairs(tb) do
    len= len+1
  end
return len
end

function is_equal(a, b)
    local na=get_len(a)
    local nb=get_len(b)    
    if(na~=nb) then
        return false
    end    
    for i=1,na,1 do
      if a[i] ~= b[i] then
          return false
      end
    end
    return true
end

function get_key2(value, tbl)
    for k,v in ipairs(tbl) do
      if is_equal(v, value) then
          return k
      end
    end
    return -1
end

function printAddTable(G,z,Func)
    local nR=get_len(G)    
    local rG={}
    for i=1,nR,1 do
       local r=gMod(G[i],z)
       table.insert(rG,r)
    end    
    for i=1,nR,1 do
        for j=1,nR,1 do
           local ij=gMod(Func(rG[i],rG[j]),z)
           local IJ=get_key2(ij,rG)
           io.write(IJ, " ")
           --io.write(IJ,"->",gStr(ij), " ")
        end
        io.write("\n")
    end
end

--local rR4={{0,0},{-1,0},{0,-1},{-1,-1}}
--print("[R4Add]")
--printAddTable(rR4,{2,0},gAdd)
local R4={{0,0},{1,0},{0,1},{1,1}}
print("Z[i]/(2)是4阶环R4_9={0,1,i,1+i}:")
print("[R4Add]")
printAddTable(R4,{2,0},gAdd)
print("[R4Mul]")
printAddTable(R4,{2,0},gMul)
local R8={{0,0},{1,0},{2,0},{3,0},{0,1},{1,1},{2,1},{3,1}}
print("Z[i]/(2+2i)是8阶环R8_22={0,1,2,3,i,1+i,2+i,3+i}:")
print("[R8Add]")
printAddTable(R8,{2,2},gAdd)
print("[R8Mul]")
printAddTable(R8,{2,2},gMul)
local R45={{0,0},{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},{8,0},{9,0},{10,0},{11,0},{12,0},{13,0},{14,0},{0,1},{1,1},{2,1},{3,1},{4,1},{5,1},{6,1},{7,1},{8,1},{9,1},{10,1},{11,1},{12,1},{13,1},{14,1},{0,2},{1,2},{2,2},{3,2},{4,2},{5,2},{6,2},{7,2},{8,2},{9,2},{10,2},{11,2},{12,2},{13,2},{14,2}}
print("Z[i]/(3+6i)是45阶环={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,i,1+i,2+i,3+i,4+i,5+i,6+i,7+i,8+i,9+i,10+i,11+i,12+i,13+i,14+i,2+2i,3+2i,4+2i,5+2i,6+2i,7+2i,8+2i,9+2i,10+2i,11+2i,12+2i,13+2i,14+2i}:")
print("[R45Add]")
printAddTable(R45,{3,6},gAdd)
print("[R45Mul]")
printAddTable(R45,{3,6},gMul)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!