各卧唯 发表于 2025-7-31 10:20:47

有限Abel群的结构(3)

  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

   https://www.cnblogs.com/Colin-Cai/p/18931900.html

  作者:窗户

  QQ/微信:6679072

  E-mail:6679072@qq.com本节在上一节的结论基础上,通过程序对于给定阶数生成该阶下所有可能的Abel群。
 
有限Abel群结构定理
我们再回忆一下有限Abel群的所有可能结构:
任何一个阶数大于1的有限Abel群都可以同构为数个阶数大于1的循环群的直积$Z_{a_1} \otimes Z_{a_2} \otimes ... \otimes Z_{a_n}$,并满足各循环群的阶数从左到右为约数关系,也就是$a_1|a_2|...|a_n$,另外$a_1,a_2,...,a_n$相乘等于原Abel群的阶数。
另外,
如果$a_1,a_2,...,a_n$都是大于1的整数,$b_1,b_2,...,b_m$也都是大于1的整数,
$a_1|a_2|...|a_n$,并且$b_1|b_2|...|b_m$,
那么$Z_{a_1} \otimes Z_{a_2} \otimes ... \otimes Z_{a_n} \cong Z_{b_1} \otimes Z_{b_2} \otimes ... \otimes Z_{b_m}$
的充要条件是
$m=n \land a_1=b_1 \land a_2=b_2 \land ... \land a_n = b_n$
也就是只要有一个循环群不同,两个Abel群就不同构。
比如$72$阶Abel群,总共有以下几个同构:
$Z_{72}$
$Z_2 \otimes Z_{36}$
$Z_3 \otimes Z_{24}$
$Z_6 \otimes Z_{12}$
$Z_2 \otimes Z_2 \otimes Z_{18}$
$Z_2 \otimes Z_6 \otimes Z_6$
以下,我们用程序实现,还是继续选择Python语言。
 
生成器递归实现
我们首先考虑生成器,我想程序员们大多对于此问题应该有递归的直觉。递归很多时候在于问题的分解。
Python的生成器其实是有点拗口的,它从语法上并非那么自然,使得像我这样有点语法洁癖的人,总觉得有点疙瘩。
比如如下代码:
def f(x):    if x
页: [1]
查看完整版本: 有限Abel群的结构(3)