CINTA 第四次作业

第七章作业 第七章作业 第七章作业
2. 群 Z 17 ∗ 有多少个生成元?已知 3 是其中一个生成元,请问 9 和 10 是否生成元? 2.群Z_{17}^{*}有多少个生成元?已知 3 是其中一个生成元,请问 9 和 10 是否生成元? 2.Z17有多少个生成元?已知3是其中一个生成元,请问910是否生成元?
解: 群 Z 17 ∗ 有 ϕ ( 17 − 1 ) = 8 个生成元 群Z_{17}^{*}有\phi(17-1)=8个生成元 Z17ϕ(171)=8个生成元
命题7.5表述为:
设群 G = < g > 是阶为 n 的循环群。如果 h = g k ,则 h 的阶为 n / d ,其中 d = g c d ( k , n ) 。 设群 G = <g> 是阶为 n 的循环群。如果 h = g^{k},则 h 的阶为 n/d,其中 d = gcd(k, n)。 设群G=<g>是阶为n的循环群。如果h=gk,则h的阶为n/d,其中d=gcd(k,n)
已知3是一个生成元,即群<3>是阶为16的循环群,
9 = 3 2 , g c d ( 2 , 16 ) = 2 9=3^{2},gcd(2,16)=2 9=32,gcd(2,16)=2,所以9的阶为16/2=8,9不是生成元
10 = 3 3 , g c d ( 3 , 16 ) = 1 10=3^{3},gcd(3,16)=1 10=33,gcd(3,16)=1,所以9的阶为16/1=16,10是生成元

3. p 和 q 是两个不同的素数,请问 Z p q 都多少个生成元? r 是任意正整数,请问 Z p r 都多 3. p 和 q 是两个不同的素数,请问 Z_{pq}都多少个生成元?r 是任意正整数,请问 Z_{p^{r}}都多 3.pq是两个不同的素数,请问Zpq都多少个生成元?r是任意正整数,请问Zpr都多
少个生成元? 少个生成元? 少个生成元?
解:群 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)=(p1)(q1)个生成元
群 Z p r 有 ϕ ( p r ) = ϕ r ( p ) = ( p − 1 ) r 个生成元 群Z_{p^{r}}有\phi(p^{r})=\phi^{r}(p)=(p-1)^{r}个生成元 Zprϕ(pr)=ϕr(p)=(p1)r个生成元

6. 证明:如果群 G 没有非平凡子群,则群 G 是循环群。 6.证明:如果群 G 没有非平凡子群,则群 G 是循环群。 6.证明:如果群G没有非平凡子群,则群G是循环群。
证明:任意群本身也是它自己的子群,而群G没有非平凡子群
那么,群G就是平凡群,即G={e}
下面证明平凡群是循环群:
从群G中取一元素作为生成元生成一个循环群 G 1 G_{1} G1
G 1 = < e > = e = G G_{1}=<e>={e}=G G1=<e>=e=G
所以,群G也是循环群。

8. 证明:设 G 为任意群,且 g ∈ G 。如果存在 m , n ∈ Z 使得 g m = 1 且 g n = 1 ,则 g d = 1 ,其中 d = g c d ( m , n ) 。 8.证明:设 G 为任意群,且 g ∈ G。如果存在 m, n ∈ Z 使得 g^{m}=1 且 g^{n} = 1,则g^{d} = 1,其中 d = gcd(m, n)。 8.证明:设G为任意群,且gG。如果存在m,nZ使得gm=1gn=1,则gd=1,其中d=gcd(m,n)
证明: g ∈ G ,设群 G 1 是由 g 生成的阶为 x 的循环群 证明:g\in G,设群G_{1}是由g生成的阶为x的循环群 证明:gG,设群G1是由g生成的阶为x的循环群
命题7.4表述为:
任取正整数 n ,设 G = < g > 是阶为 n 的循环群,则 g k = e 当且仅当 n 整除 k 。 任取正整数 n,设 G = <g> 是阶为 n 的循环群,则 g^{k} = e 当且仅当 n 整除 k。 任取正整数n,设G=<g>是阶为n的循环群,则gk=e当且仅当n整除k
因为 g m = 1 且 g n = 1 ,所以 x 整除 m , x 整除 n , x 是 m , n 的公因子 因为g^{m}=1 且 g^{n} = 1,所以x整除m,x整除n,x是m,n的公因子 因为gm=1gn=1,所以x整除mx整除nxmn的公因子
而 d = g c d ( m , n ) ,所以 x ⩽ d ,且 x 整除 d ,所以 g d = 1 而d=gcd(m,n),所以x \leqslant d,且x整除d,所以g^{d}=1 d=gcd(m,n),所以xd,且x整除d,所以gd=1
第八章作业 第八章作业 第八章作业
1. 设 G 是群, H 是 G 的子群。任取 g 1 , g 2 ∈ G ,则 g 1 H = g 2 H , 当且仅当 g 1 − 1 g 2 ∈ H 。 1.设 G 是群,H 是 G 的子群。任取 g_{1}, g_{2} ∈ G,则 g_{1}H = g_{2}H,当且仅当 g_{1}^{−1}g_{2}\in H。 1.G是群,HG的子群。任取g1,g2G,则g1H=g2H,当且仅当g11g2H
证明:先证必要性:
任取 g 1 , g 2 ∈ G ,则 g 1 H = g 2 H , 那么, ∃ h 1 、 h 2 ∈ H , s t g 1 h 1 = g 2 h 2 任取 g_{1}, g_{2} ∈ G,则 g_{1}H = g_{2}H,那么,\exists h_{1}、h_{2}\in H,stg_{1}h_{1} = g_{2}h_{2} 任取g1,g2G,则g1H=g2H,那么,h1h2Hstg1h1=g2h2
整理得,
g 1 − 1 g 2 = h 1 h 2 − 1 g_{1}^{-1}g_{2}=h_{1}h_{2}^{-1} g11g2=h1h21
h 1 、 h 2 均在群 H 中, h 1 h 2 − 1 ∈ H ,所以 g 1 − 1 g 2 ∈ H h_{1}、h_{2}均在群H中,h_{1}h_{2}^{-1}\in H,所以g_{1}^{−1}g_{2}\in H h1h2均在群H中,h1h21H,所以g11g2H
再证充分性:
要证明 A 、 B 两集合相等,需要证明 A 、 B 两集合元素个数相等,以及证明 A ⊂ B , B ⊂ A 要证明A、B两集合相等,需要证明A、B两集合元素个数相等,以及证明A\subset B,B\subset A 要证明AB两集合相等,需要证明AB两集合元素个数相等,以及证明AB,BA
首先, ∣ g 1 H ∣ = ∣ g 2 H ∣ = ∣ H ∣ 首先,|g_{1}H|=|g_{2}H|=|H| 首先,g1H=g2H=H
要证明 g 1 H ⊂ g 2 H , 即证明 ∀ h 1 ∈ H , ∃ h 2 ∈ H , s t g 1 H = g 2 H 要证明g_{1}H\subset g_{2}H,即证明\forall h_{1}\in H,\exists h_{2}\in H,st g_{1}H = g_{2}H 要证明g1Hg2H,即证明h1H,h2H,stg1H=g2H
而 g 1 − 1 g 2 ∈ H , ∃ h ∈ H , s t g 1 − 1 g 2 = h 而g_{1}^{−1}g_{2}\in H,\exists h\in H,st g_{1}^{−1}g_{2}=h g11g2HhH,stg11g2=h
对 ∀ h 1 ∈ H , ∃ h 2 ∈ H , s t h 1 h 2 − 1 = h ,即 对\forall h_{1}\in H,\exists h_{2}\in H,sth_{1}h_{2}^{-1}=h,即 h1H,h2H,sth1h21=h,即
g 1 − 1 g 2 = h 1 h 2 − 1 g_{1}^{-1}g_{2}=h_{1}h_{2}^{-1} g11g2=h1h21
整理得, g 1 H = g 2 H ,所以 g 1 H ⊂ g 2 H 整理得,g_{1}H = g_{2}H,所以g_{1}H\subset g_{2}H 整理得,g1H=g2H,所以g1Hg2H
要证明 g 2 H ⊂ g 1 H , 即证明 ∀ h 2 ∈ H , ∃ h 1 ∈ H , s t g 1 H = g 2 H 要证明g_{2}H\subset g_{1}H,即证明\forall h_{2}\in H,\exists h_{1}\in H,st g_{1}H = g_{2}H 要证明g2Hg1H,即证明h2H,h1H,stg1H=g2H
证明方法同上,所以 g 2 H ⊂ g 1 H g_{2}H\subset g_{1}H g2Hg1H
综上, g 1 H = g 2 H 综上,g_{1}H = g_{2}H 综上,g1H=g2H

3. 如果 G 是群, H 是群 G 的子群,且 [ G : H ] = 2 ,请证明对任意的 g ∈ G , g H = H g 。 3.如果G是群,H是群 G 的子群,且[G : H]=2,请证明对任意的 g ∈ G,gH = Hg。 3.如果G是群,H是群G的子群,且[G:H]=2,请证明对任意的gGgH=Hg
证明:因为[G : H]=2,即群G被两个陪集划分。
若 g ∈ H ,则 g H = H = H g ,原命题成立。 若g\in H,则gH=H=Hg,原命题成立。 gH,则gH=H=Hg,原命题成立。
若 g ∉ H ,则群 G 被左陪集 g H 和 H 划分,群 G 被右陪集 H g 和 H 划分 若g\not\in H,则群G被左陪集gH和H划分,群G被右陪集Hg和H划分 gH,则群G被左陪集gHH划分,群G被右陪集HgH划分
同样有 g H = H g 同样有gH = Hg 同样有gH=Hg

5. 设 G 是阶为 p q 的群,其中 p 和 q 是素数。请证明 G 的任意非平凡子群是循环群。 5.设 G 是阶为 pq 的群,其中 p 和 q 是素数。请证明 G 的任意非平凡子群是循环群。 5.G是阶为pq的群,其中pq是素数。请证明G的任意非平凡子群是循环群。
证明:设群H是群G的子群,由拉格朗日定理可得, |G|/|H| = [G : H]
|G|=pq,p、q均是素数,所以|H|=p或q或1或pq
当|H|=1或pq时,H是群G的平凡子群,不在本题考虑范围内
当|H|=p或q时,推论8.2表述为:
设 G 是素数阶有限群,即 ∣ G ∣ = p , p 是素数,则 G 是循环群且任意非单位元元素 , g ∈ G 是生成元。 设 G 是素数阶有限群,即 |G| = p,p 是素数,则 G 是循环群且任意非单位元元素,g\in G 是生成元。 G是素数阶有限群,即G=pp是素数,则G是循环群且任意非单位元元素,gG是生成元。
群H的阶为素数,所以群H是循环群

9. 编程完成以下工作:对任意给定的一个素数 p ,求出 Z p ∗ 的最小生成元。任取一个整数 n ,对大于 1 小于 n 的所有素数 p ,求 Z p ∗ 的最小生成元,并求以上最小生成元集合中最大者所对应的素数 p 。 9.编程完成以下工作:对任意给定的一个素数 p,求出 Z_{p}^{*} 的最小生成元。任取一个整数 n,对大于 1 小于 n 的所有素数 p,求 Z_{p}^{*} 的最小生成元,并求以上最小生成元集合中最大者所对应的素数 p。 9.编程完成以下工作:对任意给定的一个素数p,求出Zp的最小生成元。任取一个整数n,对大于1小于n的所有素数p,求Zp的最小生成元,并求以上最小生成元集合中最大者所对应的素数p

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

bool isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    for (int i = 2; i <= sqrt(n); ++i) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}

int getMinGenerator(int p) {
    for (int g = 2; g < p; ++g) {
        bool isGenerator = true;
        for (int i = 1; i < p - 1; ++i) {
            if ((int)pow(g, i) % p == 1) {
                isGenerator = false;
                break;
            }
        }
        if (isGenerator) {
            return g;
        }
    }
    return -1;  // 如果找不到生成元则返回-1
}

int main() {
    cout << "1.输入一个素数" << endl;
    cout << "2.输入任意一个整数" << endl;
    cout << "请输入你的选择:";
    int choice;
    cin >> choice;
    if (choice == 1) {
        int p;
        cout << "请输入一个素数:";
        cin >> p;
        if (isPrime(p)) {
            int minGenerator = getMinGenerator(p);
            cout << "最小生成元g=" << minGenerator << endl;
        }
        else {
            cout << "输入的不是一个素数" << endl;
        }
        return 0;
    }
    else if (choice == 2) {
        int n;
        cout << "请输入一个整数n:" << endl;
        cin >> n;

        vector<int> minGenerators;

        for (int p = 2; p < n; ++p) {
            if (isPrime(p)) {
                int minGenerator = getMinGenerator(p);
                minGenerators.push_back(minGenerator);
                std::cout << "素数p=" << p << ",最小生成元g=" << minGenerator << endl;
            }
        }

        int maxGenerator = *std::max_element(minGenerators.begin(), minGenerators.end());
        int maxPrime = 0;

        for (int p = 2; p < n; ++p) {
            if (isPrime(p) && getMinGenerator(p) == maxGenerator) {
                maxPrime = p;
                break;
            }
        }

        cout << "最大生成元对应的素数p=" << maxPrime << endl;
        return 0;
    }
    else {
        cout << "输入错误" << endl;
        return 0;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值