素数p阶群乘法循环群啥意思_抽象代数2-3 群元素的阶和循环群

本文探讨了群论的基本概念,包括群元素的阶、循环群的性质以及它们之间的关系。举例说明了整数加群和四次单位根群的结构,阐述了无限和有限循环群的同构性质,并介绍了欧拉函数在循环群中的应用。通过一系列练习题加深了对群论基本理论的理解。
摘要由CSDN通过智能技术生成

2ca28b4429da666ccf28df6ac0028970.png

研究一个群,自然的想法是先从最简单的一个元素"a" 开始,与"a" 有关的自然是a和自己以及它的逆的一些运算构成的幂

。a的幂跟单位元的关系得到元素的阶的概念,a的幂构成的集合是一个结构清楚的群---循环群。

一、群元素的阶

研究一个群,自然的想法是先从最简单的一个元素"a" 开始",与"a" 有关的自然是下面的元素:

第一个自然的想法是:a的幂和最特殊的元素---单位元e有没有关系?

定义1(群元素的阶) 设a是群G中的一个元素,使得
的最小正整数n称为a的阶,记作|a|. 若这样的n不存在,则称a是无限阶的,记为|a|=+∞。 注: (1)单位元|e|=1; (2)
(3)
.

第2条

很容易验证,由这一条性质可以得到:有限群中阶大于2的元素一定是偶数个;从而偶数阶群中一定有2阶元素。(思考一下为什么?)

例1:整数加群中0的阶为1,1的阶为+∞。

例2:4次单位根群 G={1,-1,i,-i}中

观察

次数与阶数的关系。
定义2:若群G中每个元素的阶都有限,则称G为周期群;若G中除e外,其余元素的阶无限,则称G为无扭群;既不是周期群也不是无扭群的群称为混合群。
定理1:有限群中每个元素的阶都有限
证明:处理有限群的方法我们用过很多遍了,就是形式地写出很多个元素,其中必有相等的元。例如此定理:
中必有相等的,设
,则
注:无限群中元素的阶可能有限也可能无限,甚至可能都有限。

例3 :设

是全体i 次单位根对普通乘法作成的i次单位根群。令
, 则U对普通乘法作成一个群,且是一个无限交换群,其中每个元素的阶都有限。

接着例2,给了一个元素a的阶数之后,我们自然的想知道a的幂次的阶和a的阶

在pbc库中生成一个160乘法循环群可以按照以下步骤进行: 1. 首先,需要包含必要的头文件: ```c++ #include <pbc/pbc.h> ``` 2. 然后,需要定义一个`pairing_t`类型的对象,并初始化它,以及一个`element_t`类型的对象: ```c++ pairing_t pairing; element_t g; ``` ```c++ pairing_init_set_str(pairing, (char*) "type a\n\ p=177624190631167966601463387563402902455944089718345998606106149717787508678239772162940658386444934518118056809978733478010818235174237007619898297535368143298789351818183073904105608002278838372597414129181361076800042717936444252342764196121592296652239090610447286754574923977766543252368352044175489967396184413\n\ n=177624190631167966601463387563402902455944089718345998606106149717787508678239772162940658386444934518118056809978733478010818235174237007619898297535368143298789351818183073904105608002278838372597414129181361076800042717936444252342764196121592296652239090610447286754574923977766543252368352044175489967396183040\n\ g=2\n\ h=810897936571139301874008138386758491859559085301\n", 0); element_init_G1(g, pairing); ``` 在上面的代码中,我们使用`pairing_init_set_str()`函数初始化了一个`pairing`对象,并指定了一个160位的素数`p`、一个和`p`同的整数`n`、一个生成元`g`和一个随机数`h`。然后,我们使用`element_init_G1()`函数初始化了一个`element`对象`g`,并将其设置为生成元。 3. 最后,我们可以输出该乘法循环群数: ```c++ int r = element_order(g); std::cout << "Order of G1 group is " << r << std::endl; ``` 完整的示例代码如下: ```c++ #include <pbc/pbc.h> #include <iostream> int main() { pairing_t pairing; element_t g; // Initialize pairing and generator pairing_init_set_str(pairing, (char*) "type a\n\ p=177624190631167966601463387563402902455944089718345998606106149717787508678239772162940658386444934518118056809978733478010818235174237007619898297535368143298789351818183073904105608002278838372597414129181361076800042717936444252342764196121592296652239090610447286754574923977766543252368352044175489967396184413\n\ n=177624190631167966601463387563402902455944089718345998606106149717787508678239772162940658386444934518118056809978733478010818235174237007619898297535368143298789351818183073904105608002278838372597414129181361076800042717936444252342764196121592296652239090610447286754574923977766543252368352044175489967396183040\n\ g=2\n\ h=810897936571139301874008138386758491859559085301\n", 0); element_init_G1(g, pairing); // Get order of G1 group int r = element_order(g); std::cout << "Order of G1 group is " << r << std::endl; // Cleanup element_clear(g); pairing_clear(pairing); return 0; } ``` 需要注意的是,在使用`pairing_init_set_str()`函数时,需要将字符串中的换行符`\n`替换为实际的换行符,以及将字符串强制转换为`char*`类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值