有限交換環Z[i]/(a)、mZ[i]/nZ[i]的結構分析

32階環Z[i]/(4+4i)的單個和2個生成元的真子環的子環ID分佈I1I2:
Z[i]/(4+4i)=R32_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,16,0,0],8,1,1,16,2,3,7,112,15,32,[1,3,4,4,12,8],[[2,4,16],[2,8,48],[4,2,16],[4,4,144],[4,8,192],[8,2,48],[8,4,192],[8,8,256]]
I1I2=[[1,1,1],[2,1,3],[4,2,4],[8,3,4],[16,7,4],[16,109,8]],[[2,1,3],[4,2,10],[4,4,3],[8,3,22],[8,16,12],[16,7,70],[16,109,92]]
Z[i]/([1+1i],4+4i)=R16_109:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,0,0],4,1,0,16,1,3,7,80,15,16,[1,3,4,0,8],[[2,4,16],[4,2,16],[4,4,144]]
I1I2=[[1,1,1],[2,1,3],[4,2,4]],[[2,1,3],[4,2,10],[4,4,3],[8,16,12]]
Z[i]/([2+2i,2],4+4i)=R8_16:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,0,8,1,3,7,48,7,8,[1,3,4,0],[[4,4,16]]
I1I2=[[1,1,1],[2,1,3],[4,2,4]],[[2,1,3],[4,2,10],[4,4,3]]
72階環Z[i]/(6+6i)的單個和2個生成元的真子環的子環ID分佈I1I2:
R72_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,8,4,24,0,0,32,0,0,0,0],12,1,1,40,4,1,3,340,39,72,[1,1,2,4,2,2,6,8,6,4,24,12],[[2,
2,4],[2,4,12],[2,6,32],[2,12,96],[3,3,64],[3,6,192],[3,12,256],[4,2,12],[4,4,16],[4,6,96],[4,12,128],[6,2,32],[6,3,192],
[6,4,96],[6,6,576],[6,12,768],[12,2,96],[12,3,256],[12,4,128],[12,6,768],[12,12,1024]]
I1I2=[[1,1,1],[2,1,1],[3,2,2],[4,3,2],[4,5,2],[6,2,2],[8,22,2],[9,11,6],[12,0,8],[18,11,6],[24,-1,4],[36,-1,24]],[[2,1,1],[3,2,3],[4,3,5],[4,5,5],[6,2,11],[8,22,17],[9,11,33],[12,0,92],[18,11,105],[24,-1,142],[36,-1,852]]
80階環Z[i]/(4+8i)的單個和2個生成元的真子環的子環ID分佈I1I2:
R80_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,4,0,12,0,48,0,0],20,1,1,48,4,3,3,432,47,80,[1,3,2,4,6,12,4,8,24,16],[[2,4,32],
[2,20,128],[4,2,32],[4,4,144],[4,10,128],[4,20,576],[5,5,16],[5,10,48],[5,20,192],[10,4,128],[10,5,48],[10,10,144],[10,2
0,576],[20,2,128],[20,4,576],[20,5,192],[20,10,576],[20,20,2304]]
I1I2=[[1,1,1],[2,1,3],[4,3,2],[5,2,4],[8,21,2],[8,24,4],[10,2,12],[16,105,4],[20,-1,8],[40,-1,24]],[[2,1,3],[4,3,5],[4,4,3],[5,2,10],[8,21,17],[8,24,22],[10,2,102],[16,105,70],[20,-1,212],[40,-1,996]]
Z[i]/([4i,2+2i],8+8i)=R16_117:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,0,0],4,1,0,16,1,7,15,192,15,16,[1,3,4,8,0],[[4,4,64]]
I1I2=[[1,1,1],[2,1,3],[4,1,4],[8,23,8]],[[2,1,3],[4,1,10],[4,4,3],[8,5,12],[8,23,44]]
範數不超過25的高斯整數共有121個。
第1個高斯整數(0,0)=0範數爲0不是高斯素數
第2個高斯整數(1,0)=1範數爲1不是高斯素數
R1_1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1],1,1,1,0,1,0,0,1,0,1,[1],[]
第3個高斯整數(0,1)=範數爲1不是高斯素數
R1_1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1],1,1,1,0,1,0,0,1,0,1,[1],[]
第4個高斯整數(-1,0)=-1範數爲1不是高斯素數
R1_1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1],1,1,1,0,1,0,0,1,0,1,[1],[]
第5個高斯整數(0,-1)=範數爲1不是高斯素數
R1_1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1],1,1,1,0,1,0,0,1,0,1,[1],[]
第6個高斯整數(1,1)=1+1i範數爲2是高斯素數
R2_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1],2,1,1,1,2,0,0,3,0,2,[1,1],[[2,2,1]]
第7個高斯整數(-1,1)=-1+1i範數爲2是高斯素數
R2_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1],2,1,1,1,2,0,0,3,0,2,[1,1],[[2,2,1]]
第8個高斯整數(-1,-1)=-1-1i範數爲2是高斯素數
R2_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1],2,1,1,1,2,0,0,3,0,2,[1,1],[[2,2,1]]
第9個高斯整數(1,-1)=1-1i範數爲2是高斯素數
R2_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1],2,1,1,1,2,0,0,3,0,2,[1,1],[[2,2,1]]
第10個高斯整數(2,0)=2範數爲4不是高斯素數
R4_9:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0],2,1,1,2,2,1,1,8,1,4,[1,2,1],[[2,2,8]]
第11個高斯整數(0,2)=範數爲4不是高斯素數
R4_9:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0],2,1,1,2,2,1,1,8,1,4,[1,2,1],[[2,2,8]]
第12個高斯整數(-2,0)=-2範數爲4不是高斯素數
R4_9:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0],2,1,1,2,2,1,1,8,1,4,[1,2,1],[[2,2,8]]
第13個高斯整數(0,-2)=範數爲4不是高斯素數
R4_9:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0],2,1,1,2,2,1,1,8,1,4,[1,2,1],[[2,2,8]]
第14個高斯整數(2,1)=2+1i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第15個高斯整數(1,2)=1+2i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第16個高斯整數(-1,2)=-1+2i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第17個高斯整數(-2,1)=-2+1i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第18個高斯整數(-2,-1)=-2-1i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第19個高斯整數(-1,-2)=-1-2i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第20個高斯整數(1,-2)=1-2i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第21個高斯整數(2,-1)=2-1i範數爲5是高斯素數
R5_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4],5,1,1,1,2,0,0,9,0,5,[1,4],[[5,5,16]]
第22個高斯整數(2,2)=2+2i範數爲8不是高斯素數
R8_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,1,4,2,1,3,20,3,8,[1,1,4,2],[[2,2,4],[2,4,12],[4,2,12],[4,4,16]]
第23個高斯整數(-2,2)=-2+2i範數爲8不是高斯素數
R8_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,1,4,2,1,3,20,3,8,[1,1,4,2],[[2,2,4],[2,4,12],[4,2,12],[4,4,16]]
第24個高斯整數(-2,-2)=-2-2i範數爲8不是高斯素數
R8_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,1,4,2,1,3,20,3,8,[1,1,4,2],[[2,2,4],[2,4,12],[4,2,12],[4,4,16]]
第25個高斯整數(2,-2)=2-2i範數爲8不是高斯素數
R8_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,4,0],4,1,1,4,2,1,3,20,3,8,[1,1,4,2],[[2,2,4],[2,4,12],[4,2,12],[4,4,16]]
第26個高斯整數(3,0)=3範數爲9是高斯素數
R9_11:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,0],3,1,1,1,2,0,0,17,0,9,[1,2,6],[[3,3,64]]
第27個高斯整數(0,3)=範數爲9是高斯素數
R9_11:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,0],3,1,1,1,2,0,0,17,0,9,[1,2,6],[[3,3,64]]
第28個高斯整數(-3,0)=-3範數爲9是高斯素數
R9_11:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,0],3,1,1,1,2,0,0,17,0,9,[1,2,6],[[3,3,64]]
第29個高斯整數(0,-3)=範數爲9是高斯素數
R9_11:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,8,0],3,1,1,1,2,0,0,17,0,9,[1,2,6],[[3,3,64]]
第30個高斯整數(3,1)=3+1i範數爲10不是高斯素數
第31個高斯整數(1,3)=1+3i範數爲10不是高斯素數
第32個高斯整數(-1,3)=-1+3i範數爲10不是高斯素數
第33個高斯整數(-3,1)=-3+1i範數爲10不是高斯素數
第34個高斯整數(-3,-1)=-3-1i範數爲10不是高斯素數
第35個高斯整數(-1,-3)=-1-3i範數爲10不是高斯素數
第36個高斯整數(1,-3)=1-3i範數爲10不是高斯素數
第37個高斯整數(3,-1)=3-1i範數爲10不是高斯素數
第38個高斯整數(3,2)=3+2i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第39個高斯整數(2,3)=2+3i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第40個高斯整數(-2,3)=-2+3i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第41個高斯整數(-3,2)=-3+2i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第42個高斯整數(-3,-2)=-3-2i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第43個高斯整數(-2,-3)=-2-3i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第44個高斯整數(2,-3)=2-3i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第45個高斯整數(3,-2)=3-2i範數爲13是高斯素數
R13_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,12],13,1,1,1,2,0,0,25,0,13,[1,12],[[13,13,144]]
第46個高斯整數(4,0)=4範數爲16不是高斯素數
R16_105:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,0,0],4,1,1,8,2,3,3,48,7,16,[1,3,2,6,4],[[2,4,32],[4,2,32],[4,4,144]]
第47個高斯整數(0,4)=範數爲16不是高斯素數
R16_105:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,0,0],4,1,1,8,2,3,3,48,7,16,[1,3,2,6,4],[[2,4,32],[4,2,32],[4,4,144]]
第48個高斯整數(-4,0)=-4範數爲16不是高斯素數
R16_105:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,0,0],4,1,1,8,2,3,3,48,7,16,[1,3,2,6,4],[[2,4,32],[4,2,32],[4,4,144]]
第49個高斯整數(0,-4)=範數爲16不是高斯素數
R16_105:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,0,0],4,1,1,8,2,3,3,48,7,16,[1,3,2,6,4],[[2,4,32],[4,2,32],[4,4,144]]
第50個高斯整數(4,1)=4+1i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第51個高斯整數(1,4)=1+4i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第52個高斯整數(-1,4)=-1+4i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第53個高斯整數(-4,1)=-4+1i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第54個高斯整數(-4,-1)=-4-1i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第55個高斯整數(-1,-4)=-1-4i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第56個高斯整數(1,-4)=1-4i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第57個高斯整數(4,-1)=4-1i範數爲17是高斯素數
R17_2:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,16],17,1,1,1,2,0,0,33,0,17,[1,16],[[17,17,256]]
第58個高斯整數(3,3)=3+3i範數爲18不是高斯素數
R18_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,8,8,0,0],6,1,1,10,4,0,0,51,9,18,[1,1,2,2,6,6],[[2,2,1],[2,6,8],[3,3,64],[3,6,64],
[6,2,8],[6,3,64],[6,6,64]]
第59個高斯整數(-3,3)=-3+3i範數爲18不是高斯素數
R18_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,8,8,0,0],6,1,1,10,4,0,0,51,9,18,[1,1,2,2,6,6],[[2,2,1],[2,6,8],[3,3,64],[3,6,64],
[6,2,8],[6,3,64],[6,6,64]]
第60個高斯整數(-3,-3)=-3-3i範數爲18不是高斯素數
R18_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,8,8,0,0],6,1,1,10,4,0,0,51,9,18,[1,1,2,2,6,6],[[2,2,1],[2,6,8],[3,3,64],[3,6,64],
[6,2,8],[6,3,64],[6,6,64]]
第61個高斯整數(3,-3)=3-3i範數爲18不是高斯素數
R18_22:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,8,8,0,0],6,1,1,10,4,0,0,51,9,18,[1,1,2,2,6,6],[[2,2,1],[2,6,8],[3,3,64],[3,6,64],
[6,2,8],[6,3,64],[6,6,64]]
第62個高斯整數(4,2)=4+2i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第63個高斯整數(2,4)=2+4i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第64個高斯整數(-2,4)=-2+4i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第65個高斯整數(-4,2)=-4+2i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第66個高斯整數(-4,-2)=-4-2i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第67個高斯整數(-2,-4)=-2-4i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第68個高斯整數(2,-4)=2-4i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第69個高斯整數(4,-2)=4-2i範數爲20不是高斯素數
R20_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,0,4,12,0],10,1,1,12,4,1,1,72,11,20,[1,2,1,4,8,4],[[2,2,8],[2,10,32],[5,5,16],[5,1
0,48],[10,2,32],[10,5,48],[10,10,144]]
第70個高斯整數(5,0)=5範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,24,0],5,1,1,9,4,0,0,81,8,25,[1,12,12],[[5,5,544]]
第71個高斯整數(4,3)=4+3i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第72個高斯整數(3,4)=3+4i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第73個高斯整數(0,5)=範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,24,0],5,1,1,9,4,0,0,81,8,25,[1,12,12],[[5,5,544]]
第74個高斯整數(-3,4)=-3+4i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第75個高斯整數(-4,3)=-4+3i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第76個高斯整數(-5,0)=-5範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,24,0],5,1,1,9,4,0,0,81,8,25,[1,12,12],[[5,5,544]]
第77個高斯整數(-4,-3)=-4-3i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第78個高斯整數(-3,-4)=-3-4i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第79個高斯整數(0,-5)=範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,24,0],5,1,1,9,4,0,0,81,8,25,[1,12,12],[[5,5,544]]
第80個高斯整數(3,-4)=3-4i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第81個高斯整數(4,-3)=4-3i範數爲25不是高斯素數
R25_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,4,20],25,1,1,5,2,4,4,65,4,25,[1,4,20],[[5,25,80],[25,5,80],[25,25,400]]
第82個高斯整數(5,1)=5+1i範數爲26不是高斯素數
第83個高斯整數(1,5)=1+5i範數爲26不是高斯素數
第84個高斯整數(-1,5)=-1+5i範數爲26不是高斯素數
第85個高斯整數(-5,1)=-5+1i範數爲26不是高斯素數
第86個高斯整數(-5,-1)=-5-1i範數爲26不是高斯素數
第87個高斯整數(-1,-5)=-1-5i範數爲26不是高斯素數
第88個高斯整數(1,-5)=1-5i範數爲26不是高斯素數
第89個高斯整數(5,-1)=5-1i範數爲26不是高斯素數
第90個高斯整數(5,2)=5+2i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第91個高斯整數(2,5)=2+5i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第92個高斯整數(-2,5)=-2+5i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第93個高斯整數(-5,2)=-5+2i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第94個高斯整數(-5,-2)=-5-2i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第95個高斯整數(-2,-5)=-2-5i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第96個高斯整數(2,-5)=2-5i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第97個高斯整數(5,-2)=5-2i範數爲29是高斯素數
R29_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,28],29,1,1,1,2,0,0,57,0,29,[1,28],[[29,29,784]]
第98個高斯整數(4,4)=4+4i範數爲32不是高斯素數
R32_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,16,0,0],8,1,1,16,2,3,7,112,15,32,[1,3,4,4,12,8],[[2,4,16],[2,8,48],[4,2,16],[4
,4,144],[4,8,192],[8,2,48],[8,4,192],[8,8,256]]
第99個高斯整數(-4,4)=-4+4i範數爲32不是高斯素數
R32_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,16,0,0],8,1,1,16,2,3,7,112,15,32,[1,3,4,4,12,8],[[2,4,16],[2,8,48],[4,2,16],[4
,4,144],[4,8,192],[8,2,48],[8,4,192],[8,8,256]]
第100個高斯整數(-4,-4)=-4-4i範數爲32不是高斯素數
R32_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,16,0,0],8,1,1,16,2,3,7,112,15,32,[1,3,4,4,12,8],[[2,4,16],[2,8,48],[4,2,16],[4
,4,144],[4,8,192],[8,2,48],[8,4,192],[8,8,256]]
第101個高斯整數(4,-4)=4-4i範數爲32不是高斯素數
R32_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,3,12,16,0,0],8,1,1,16,2,3,7,112,15,32,[1,3,4,4,12,8],[[2,4,16],[2,8,48],[4,2,16],[4
,4,144],[4,8,192],[8,2,48],[8,4,192],[8,8,256]]
第102個高斯整數(5,3)=5+3i範數爲34不是高斯素數
第103個高斯整數(3,5)=3+5i範數爲34不是高斯素數
第104個高斯整數(-3,5)=-3+5i範數爲34不是高斯素數
第105個高斯整數(-5,3)=-5+3i範數爲34不是高斯素數
第106個高斯整數(-5,-3)=-5-3i範數爲34不是高斯素數
第107個高斯整數(-3,-5)=-3-5i範數爲34不是高斯素數
第108個高斯整數(3,-5)=3-5i範數爲34不是高斯素數
第109個高斯整數(5,-3)=5-3i範數爲34不是高斯素數
第110個高斯整數(5,4)=5+4i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第111個高斯整數(4,5)=4+5i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第112個高斯整數(-4,5)=-4+5i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第113個高斯整數(-5,4)=-5+4i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第114個高斯整數(-5,-4)=-5-4i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第115個高斯整數(-4,-5)=-4-5i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第116個高斯整數(4,-5)=4-5i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第117個高斯整數(5,-4)=5-4i範數爲41是高斯素數
R41_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,40],41,1,1,1,2,0,0,81,0,41,[1,40],[[41,41,1600]]
第118個高斯整數(5,5)=5+5i範數爲50不是高斯素數
R50_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,24,24,0,0],10,1,1,34,8,0,0,243,33,50,[1,1,12,12,12,12],[[2,2,1],[2,10,24],[5,5,54
4],[5,10,544],[10,2,24],[10,5,544],[10,10,576]]
第119個高斯整數(-5,5)=-5+5i範數爲50不是高斯素數
R50_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,24,24,0,0],10,1,1,34,8,0,0,243,33,50,[1,1,12,12,12,12],[[2,2,1],[2,10,24],[5,5,54
4],[5,10,544],[10,2,24],[10,5,544],[10,10,576]]
第120個高斯整數(-5,-5)=-5-5i範數爲50不是高斯素數
R50_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,24,24,0,0],10,1,1,34,8,0,0,243,33,50,[1,1,12,12,12,12],[[2,2,1],[2,10,24],[5,5,54
4],[5,10,544],[10,2,24],[10,5,544],[10,10,576]]
第121個高斯整數(5,-5)=5-5i範數爲50不是高斯素數
R50_-1:N0n0bAbOn1n2n4n5n6n7n8S1N2=[1,1,24,24,0,0],10,1,1,34,8,0,0,243,33,50,[1,1,12,12,12,12],[[2,2,1],[2,10,24],[5,5,54
4],[5,10,544],[10,2,24],[10,5,544],[10,10,576]]

#include"IRing.h"
#include<iostream>
#include<complex>
#include<vector>
#include<algorithm>
using namespace std;

typedef complex<int> GaussianInteger;

unsigned int Primes[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,
    107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,
    337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,
    593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,
    857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997};

// 按範數和輻角主值從小到大排列順序
bool lessGaussianInteger(const GaussianInteger &m,const GaussianInteger &n) 
{
    int norm1=m.real()*m.real()+m.imag()*m.imag();
    int norm2=n.real()*n.real()+n.imag()*n.imag();
    float arg1=atan2f(m.imag(),m.real());
    float arg2=atan2f(n.imag(),n.real());
    float pi=atan2f(0,-1);
    if(arg1<0)
        arg1+=2*pi;
    if(arg2<0)
        arg2+=2*pi;
    if(norm1!=norm2)
        return norm1<norm2;
    else
        return arg1<arg2;
}

string Itos(int a)
{
    char sz[20]={0};
    sprintf(sz,"%d",a);
    return sz;
}

string gStr(GaussianInteger& a)
{
    string str;
    if(a.real()!=0 && a.imag()>0)
        str=Itos(a.real())+"+"+Itos(a.imag())+"i";
    if(a.real()!=0 && a.imag()<0)
        str=Itos(a.real())+Itos(a.imag())+"i";
    if(a.imag()==0)
        str=Itos(a.real());
    if(a.real()==0 && a.imag()!=0)
        str=Itos(a.imag())+"i";
    return str;
}

// 有限交換環Z[i]/(a)、mZ[i]/nZ[i]
struct ZimodnZ:public IRing
{
public:
    // 靜態函數
    static int gcd(int a, int b);
    static GaussianInteger Div(const GaussianInteger &a,const GaussianInteger &b);
    static bool divide(const GaussianInteger& a, const GaussianInteger& b,GaussianInteger& q, GaussianInteger& r);
    static GaussianInteger gMod(const GaussianInteger &a,const GaussianInteger &b);
    static int Norm(const GaussianInteger& a);
    static GaussianInteger gcd(const GaussianInteger& a, const GaussianInteger& b);
    static GaussianInteger simple_gcd(const GaussianInteger& a, const GaussianInteger& b);
    static GaussianInteger extended_gcd(const GaussianInteger& a, const GaussianInteger& b,GaussianInteger& x, GaussianInteger& y);
    static bool IsPrime(unsigned int N);
    static bool IsPrime(const GaussianInteger& a);
    static vector<GaussianInteger> FRZi(const GaussianInteger &a,const vector<GaussianInteger> &v);
public:
    // 實現抽象基類的方法
    virtual void printTable();
    virtual int add(int a,int b);
    virtual int mul(int a,int b);
    virtual int size(); 
    // 構造函數
    ZimodnZ(){};
    ZimodnZ(const GaussianInteger &a);
    // 成員函數    
    void initFR(const GaussianInteger &m,const GaussianInteger &n);
    void initFR(const GaussianInteger &m1,const GaussianInteger &m2,const GaussianInteger &n);        
    // 成員變量
    vector<GaussianInteger> m_Set;
    vector<GaussianInteger> m_gen;    
    GaussianInteger m_a;// 運算爲模a加法和模a乘法    
};

ZimodnZ::ZimodnZ(const GaussianInteger &a)
{
    m_a=a;
    int num=Norm(a);
    int nb=abs(gcd(a.real(),a.imag()));
    int na=num/nb;
    for(int i=0;i<na;i++)
    {
        for(int j=0;j<nb;j++)
        {
            GaussianInteger ij=gMod(GaussianInteger(i,j),a);
            m_Set.push_back(ij);
        }
    }
}

vector<GaussianInteger> ZimodnZ::FRZi(const GaussianInteger &a,const vector<GaussianInteger> &v)
{
    vector<GaussianInteger> S;    
    S.push_back(GaussianInteger(0,0));
    for(int i=0;i<v.size();i++)
    {
        GaussianInteger r1=gMod(v[i],a);
        S.push_back(r1);
    }          
    int cnt=0;
    int cnt1=S.size();
    while(cnt1>cnt){
        cnt=S.size();
        for(int i=0;i<S.size();i++){
            for(int j=0;j<S.size();j++){
                GaussianInteger ij=gMod(S[i]*S[j],a);
                vector<GaussianInteger>::iterator p=std::find(S.begin(),S.end(),ij);
                if(p==S.end()){
                    S.push_back(ij);
                }
                GaussianInteger ij1=gMod(S[i]+S[j],a);
                vector<GaussianInteger>::iterator p1=std::find(S.begin(),S.end(),ij1);
                if(p1==S.end()){
                    S.push_back(ij1);
                }                
            }
        }        
        cnt1=S.size();
    }
    return S;
}

void ZimodnZ::initFR(const GaussianInteger &m,const GaussianInteger &n)
{
    m_a=n;
    vector<GaussianInteger> v;
    v.push_back(m);
    m_Set=FRZi(n,v);
    m_gen=v;
}

void ZimodnZ::initFR(const GaussianInteger &m1,const GaussianInteger &m2,const GaussianInteger &n)
{
    m_a=n;
    vector<GaussianInteger> v;
    v.push_back(m1);
    v.push_back(m2);
    m_Set=FRZi(n,v);
    m_gen=v;
}

void ZimodnZ::printTable()
{
    int ID=IdRing(this);
    string str=calcRingInvariant(this);
    printf("R%d_%d:N0n0bAbOn1n2n4n5n6n7n8S1N2=%s\n",size(),ID,str.c_str());    
    //string I1=calcI1(this);
    //string I2=calcI2(this);   
    //printf("I1I2=%s,%s\n",I1.c_str(),I2.c_str());
    //printRing(this);    
}

int ZimodnZ::add(int a,int b)
{
    if(a<0||b<0)
        return -1;
    GaussianInteger C=gMod(m_Set[a]+m_Set[b],m_a);
    vector<GaussianInteger>::iterator p=std::find(m_Set.begin(),m_Set.end(),C);
    int c=-1;
    if(p!=m_Set.end()){
        c=p-m_Set.begin();
    }
    return c;
}

int ZimodnZ::mul(int a,int b)
{
    if(a<0||b<0)
        return -1;
    GaussianInteger C=gMod(m_Set[a]*m_Set[b],m_a);
    vector<GaussianInteger>::iterator p=std::find(m_Set.begin(),m_Set.end(),C);
    int c=-1;
    if(p!=m_Set.end()){
        c=p-m_Set.begin();
    }
    return c;
}

int ZimodnZ::size()
{
    return m_Set.size();
}

// 利用歐幾里得算法計算兩個數的最大公約數
int ZimodnZ::gcd(int a, int b)
{
    if(b == 0) return a;
    if(a == 0) return b;
    if(a%b == 0) return b;
    else return gcd(b, a%b);
}

GaussianInteger ZimodnZ::Div(const GaussianInteger &a,const GaussianInteger &b)
{
    std::complex<float> af(a.real(),a.imag());
    std::complex<float> bf(b.real(),b.imag());
    std::complex<float> cf=af/bf;
    // int cr=cf.real()>0?(int)(cf.real()+0.5):(int)(cf.real()-0.5);
    // int ci=cf.imag()>0?(int)(cf.imag()+0.5):(int)(cf.imag()-0.5);
    int cr=floor(cf.real()+0.5);
    int ci=floor(cf.imag()+0.5); 
    GaussianInteger c(cr,ci);
    return c;
}

bool ZimodnZ::divide(const GaussianInteger& a, const GaussianInteger& b,GaussianInteger& q, GaussianInteger& r)
{
  q=Div(a,b);
  r = a - q*b;
  bool bret=(r==GaussianInteger(0,0));
  return bret;
}

GaussianInteger ZimodnZ::gMod(const GaussianInteger &a,const GaussianInteger &b)
{
  GaussianInteger q=Div(a,b);
  GaussianInteger r=a-q*b;
  return r;
}

int ZimodnZ::Norm(const GaussianInteger& a)
{
 return (a.real()*a.real()+a.imag()*a.imag());
}

GaussianInteger ZimodnZ::gcd(const GaussianInteger& a, const GaussianInteger& b)
{
 GaussianInteger x = a, y = b;
 if(Norm(x)<Norm(y) )
 {
  std::swap(x,y);
 }
 while ( y != GaussianInteger(0,0) ) {
  GaussianInteger q,r;
  bool ret=divide(x,y,q,r);
  x = y;
  y = r;
 }
 return x;
}

GaussianInteger ZimodnZ::simple_gcd(const GaussianInteger& a, const GaussianInteger& b)
{
  GaussianInteger aa = a, bb = b;
  if(Norm(aa)<Norm(bb) )
  {
      std::swap(aa,bb);
   }
  while(bb != GaussianInteger(0,0))
   {
      GaussianInteger qq, rr;
      bool bret=divide (aa, bb, qq, rr);
      aa = bb;
      bb = rr;
   }
  return aa;
}

GaussianInteger ZimodnZ::extended_gcd(const GaussianInteger& a, const GaussianInteger& b,GaussianInteger& x, GaussianInteger& y)
{
 GaussianInteger aa = a, bb = b;
 bool swapped = false;
 if(Norm(aa)<Norm(bb) )
 {
  std::swap(aa,bb);
  swapped = true;
 }
 GaussianInteger xx = 0, lx = 1, yy = 1, ly = 0;
 do
 {
  GaussianInteger qq, rr;
  bool bret=divide (aa, bb, qq, rr);
  aa = bb; bb = rr;
  GaussianInteger tx = lx - qq*xx;
  lx = xx; xx = tx;
  GaussianInteger ty = ly - qq*yy;
  ly = yy; yy = ty;
 }while (bb != GaussianInteger(0,0));
 x = lx;
 y = ly;
 if (swapped)
 {
  std::swap(x,y);
 }
 return aa;
}

bool ZimodnZ::IsPrime(unsigned int N)
{
    if(N==0||N==1)
        return false;
    int up=sqrt((float)N);
    for(int i=2;i<=up;i++)
    {
        if(N%i==0)
            return false;
    }
    return true;
}

/*
    高斯整數a+bi是素數當且僅當:
    1)a、b中有一個是零,另一個數的絕對值是形如4n+3的素數;
    2)a、b均不爲零,而a^2+b^2爲素數;
*/
bool ZimodnZ::IsPrime(const GaussianInteger& a)
{
    int r=abs(a.real());
    int i=abs(a.imag());        
    if(r==0 && (i+1)%4==0)
        return true;
    if(i==0 && (r+1)%4==0)
        return true;
    if(r*i>0 && IsPrime(Norm(a)))
        return true;
    return false;
}

int main(void)
{
    //GaussianInteger v[]={GaussianInteger(0,-1),GaussianInteger(3,1)};
    //int nv=sizeof(v)/sizeof(v[0]);
    //for(int i=0;i<nv;i++)
    //{
    //    ZimodnZ r(v[i]);
    //    r.printTable();
    //}
    //system("pause");
    //return 0;
    if(1)
    {
        ZimodnZ r32(GaussianInteger(4,4));
        r32.printTable();
        ZimodnZ r16_109;
        r16_109.initFR(GaussianInteger(1,1),GaussianInteger(4,4));
        r16_109.printTable();        
        ZimodnZ r8_16;
        r8_16.initFR(GaussianInteger(2,2),GaussianInteger(2,0),GaussianInteger(4,4));
        r8_16.printTable();
    }
    //system("pause");
    //return 0;

    int Norm=25;
    int n=sqrt((float)Norm);
    vector<GaussianInteger> vgint;
    for(int i=-n;i<=n;i++)
    for(int j=-n;j<=n;j++)
    {
        GaussianInteger a(i,j);  
        vgint.push_back(a);
    }
    cout<<"範數不超過"<<Norm<<"的高斯整數共有"<<vgint.size()<<"個。"<<endl;
    sort(vgint.begin(), vgint.end(),lessGaussianInteger);
    for(int j=0;j<vgint.size();j++)
    {
        string strDes=ZimodnZ::IsPrime(vgint[j])?"是高斯素數":"不是高斯素數";
        int n=ZimodnZ::Norm(vgint[j]);
        cout<<"第"<<j+1<<"個高斯整數"<<vgint[j]<<"="<<gStr(vgint[j])<<"範數爲"<<n<<strDes<<endl;
        if(n>0 && n!=10 && n!=26 && n!=34){
            ZimodnZ r(vgint[j]);
            r.printTable();
        }
    }
    system("pause");
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章