CINTA 第四次作业

第七章

Z 17 ∗ Z_{17}^* Z17 ϕ ( 16 ) = 8 \phi(16)=8 ϕ(16)=8个生成元
Z 17 ∗ 的阶为 16 Z_{17}^*的阶为16 Z17的阶为16,gcd(2,16)=2,因此9的阶是16/2=8,9不是生成元。gcd(3,16)=1,10的阶是16/1=16,所以10也是生成元。

Z p q 有 ϕ ( p q ) = ϕ ( p ) ϕ ( q ) = ( p − 1 ) ∗ ( q − 1 )个生成元 Z_{pq}有\phi(pq)=\phi(p)\phi(q)=(p-1)*(q-1)个生成元 Zpqϕ(pq)=ϕ(p)ϕ(q)=p1q1)个生成元
Z p r 有 ϕ ( p r ) = p r − p r − 1 个生成元 Z_{p^r}有\phi(p^r)=p^r-p^{r-1}个生成元 Zprϕ(pr)=prpr1个生成元

G只有平凡子群,根据子群的阶必然整除G的阶,那么G的阶必然是素数(因子只有1和它本身), 阶为素数的群必然为循环群

由 B e z o u t 定理 d = g c d ( m , n ) = b m + r n 由Bezout定理d=gcd(m,n)=bm+rn Bezout定理d=gcd(m,n)=bm+rn
g d = g b m + r n = g b m g r n = 1 b 1 r = 1 g^d=g^{bm+rn}=g^{bm}g^{rn}=1^b1^r=1 gd=gbm+rn=gbmgrn=1b1r=1

第八章

充分性: g 1 H = g 2 H , g 1 h 1 = g 2 h 2 , g 1 − 1 g 1 h 1 = g 1 − 1 g 2 h 2 , h 1 = g 1 − 1 g 2 h 2 , h 1 h 2 − 1 = g 1 − 1 g 2 , g 1 − 1 g 2 ∈ H g_1H=g_2H,g_1h_1=g_2h_2,g_1^{-1}g_1h_1=g_1^{-1}g^2h_2,h_1=g_1^{-1}g_2h_2,h_1h_2^{-1}=g_1^{-1}g_2,g_1^{-1}g_2\in H g1H=g2H,g1h1=g2h2,g11g1h1=g11g2h2,h1=g11g2h2,h1h21=g11g2,g11g2H
必要性:
g 1 − 1 g 2 ∈ H , 对于任意 g 1 , g 2 都有 g 1 g 1 − 1 g 2 ∈ g 1 H , g 2 ∈ g 2 H , g 1 H 与 g 2 H 互为子集, g 1 H = g 2 H g_1^{-1}g_2\in H,对于任意g_1,g_2都有g_1g_1^{-1}g_2\in g_1H,g_2\in g_2H,g_1H与g_2H互为子集,g_1H=g_2H g11g2H,对于任意g1,g2都有g1g11g2g1H,g2g2H,g1Hg2H互为子集,g1H=g2H

[ G : H ] = 2 , G 只有平凡子群, G 的阶必然为素数, G 是循环群, H 是一个循环子群 [G:H]=2,G只有平凡子群,G的阶必然为素数,G是循环群,H是一个循环子群 [G:H]=2,G只有平凡子群,G的阶必然为素数,G是循环群,H是一个循环子群
对于任意的 g ∈ G , 都有 g H = H g 对于任意的g\in G,都有gH=Hg 对于任意的gG,都有gH=Hg

G的阶是pq,那么G的子群的阶必然是1,p,q,pq。G的非平凡子群的阶是p或者q。
阶是素数的群必然是循环群,所以G的非平凡群是循环群

#include<bits/stdc++.h>
using namespace std;

bool is_prim(int n){
    for(int i=2;i<sqrt(n)+1;i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}
//获取Z_p star最小生成元
int get_min_g(int p){
    for(int i=2;i<p;i++){
        for(int j=2;j<p;j++){
            if((int)pow(i,j)%p==1){
                if(j==p-1){
                    return i;
                }else{
                    break;
                }
            }
        }
    }
    return -1;
}

//获取小于n的素数中,最小生成元最大的那个素数
int get_max_p(int n){
    int ret=0;
    for(int i=2;i<n;i++){
        if(is_prim(i)){
            if(get_min_g(i)>get_min_g(ret)){
                ret=i;
            }
        }
    }
    return ret;
}

int main(){
    int p;
    scanf("%d",&p);
    printf("最小生成元为:%d\n",get_min_g(p));
    int n;
    scanf("%d",&n);
    printf("获取小于n的素数中,最小生成元最大的那个素数是:%d\n",get_max_p(n));
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值