• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

-housaihao-

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

CINTA作业四

第七章

2、群 \(Z_{17}^*\) 有多少个生成元?已知\(3\) 是其中一个生成元,请问\(9\)和 \(10\) 是否生成元?

解:\(Z_{17}^*\)的阶为\(17-1=16\),\(\phi(16)=8\),所以\(Z_{17}^*\)有8个生成元。
\(9=3^2\bmod17,\because\gcd(2,16)=2\neq1\),所以\(9\)不是生成元。
\(10=3^3\bmod17,\because\gcd(3,16)=1\),所以\(10\)是生成元。

3、\(p 和 q\)是两个不同的素数,请问 \(Z_{pq}\)都多少个生成元?\(r\) 是任意正整数,请问 \(Z_{p^r}\) 都多少个生成元?

解:\(Z_{pq}\)的阶为\(pq\),有\(\phi(pq)=\phi(p)\phi(q)=(p-1)(q-1)\), \(Z_{pq}\)有\((p-1)(q-1)\)个生成元。
\(Z_{p^r}\)的阶为\(p^r\),有\(\phi(p^r)=p^r-p^{r-1}\),\(Z_{p^r}\)有\(p^r-p^{r-1}\)个生成元。

6、证明:如果群 \(G\)没有非平凡子群,则群\(G\) 是循环群。

解:群\(G\)没有非平凡子群,则\(G\)有两个子群\(\{e\}和G\)本身,任取\(g\in G且g\neq e\),则由\(g\)生成的循环群\(<g>\)为\(G\)的子群,且\(<g>\neq\{e\}\),则\(<g>=G\),所以\(G\)是生成元为\(g\)的循环群。

8、证明:设 \(G\) 为任意群,且 \(g\in G\)。如果存在 \(m, n \in Z\) 使得 \(g^m = 1\) 且 \(g^n = 1\),则 \(g^d = 1\),其中 \(d = \gcd(m, n)\)。

解:由\(Bezout\)定理可得,\(d=mr+ns(r,s均为整数)\),
\(g^{d}=g^{mr+ns}=g^{mr}*g^{ns}=(g^{m})^r*(g^{n})^s=1^m*1^s=1\)。

第八章

1、设 \(G\) 是群,\(H\) 是 \(G\) 的子群。任取 \(g_1, g_{2}\in G,则 g_1H = g_2H 当且仅当 g_1^{−1}g_{2}\in H\)

解:
充分性:若\(g_1H = g_2H\),则存在\(h_1,h_{2}\in H\)使得\(g_1h_1 = g_2h_2\),\(G\)中存在\(g_1,h_2\)的逆元\({g_1}^{-1},{h_2}^{-1}\),所以\({g_1}^{-1}g_1h_1{h_2}^{-1} = {g_1}^{-1}g_2h_2{h_2}^{-1},即{g_1}^{-1}g_2=h_1{h_2}^{-1}\),由\(H\)的封闭性,\(h_1{h_{2}^{-1}}\in H,所以,{g_1}^{-1}g_{2}\in H\)。
必要性:若\(g_1^{−1}g_{2}\in H\),则存在\(h \in H\)使得\(g_1^{−1}g_{2}=h\),所以\(g_{2}=g_1h即g_{2}\in g_1H\),由命题8.1得若\(g_{2}\in g_1H\),则\(g_1H = g_2H\)。

3、如果 \(G\) 是群,\(H\) 是群 \(G\) 的子群,且 \([G : H] = 2\),请证明对任意的 \(g \in G,gH = Hg\)。

解:H 在 G 上 不同左陪集的有\(2\)个,一个为\(H\),设另一个为\(g_1H,g_1\in G\)。
对任意的 \(g \in G\),若\(g\in H\),则由封闭性可得 \(gH = H,Hg=H,\)\(所以gH=Hg\)。
若\(g\in g_1H\),则任取\(h\in H,gh\notin H\),所以\(gH\neq H,则gH=g_1H\),同理\(Hg=g_1H\),所以\(gH=Hg\)。所以对任意的 \(g \in G,gH = Hg\)。

5、设 \(G\)是阶为 \(pq\) 的群,其中 \(p 和 q\) 是素数。请证明 \(G\) 的任意非平凡子群是循环群。

解:设\(G\) 的任意一个非平凡子群为\(H\),\(H\)的阶不为\(1或pq\),有拉格朗日定理可得\(H\)的阶必定整除\(G\)的阶,所以\(G\)的阶为\(p或q\),由推论\(8.2\)可得,当\(H\)的阶\(p或q\)为素数时,\(H\)为循环群。即\(G\) 的任意非平凡子群是循环群。

9、编程完成以下工作:对任意给定的一个素数 \(p\),求出 \(Z_p^*\) 的最小生成元。任取一个 整数 n,对大于 \(1\) 小于 \(n\) 的所有素数 \(p\),求 \(Z_p^*\) 的最小生成元,并求以上最小生成 元集合中最大者所对应的素数\(p\)。

代码如下 :

bool is_Prime(int a)
{
	for (int i = 2; i <= sqrt(a); i++)
	{
		if (a % i == 0)
			return false;
	}
	return true;
}
int prime_fators_list(int num, int* list)//素因子
{
	int list_count = 0;
	for (int i = 2; i < num; i++)
	{
		if (num % i == 0 && is_Prime(i))
		{
			list[list_count] = i;
			list_count++;
		}
	}
	return list_count;
}

bool is_primitive_root(int a, int p)//判断a是不是p的原根
{
	int list[1000];
	int list_count = prime_fators_list(p - 1, list);
	for (int i = 0; i < list_count; i++)
	{
		int tempy = (p - 1) / list[i];
		int temp = pow(a, tempy);
		if (temp % p == 1)
			return false;
	}
	return true;
}

int find_min_generator(int p)//找到P的最小生成元
{
	for (int i = 2; i <= p - 1; i++)
	{
		if (is_primitive_root(i, p))
			return i;
	}
	return 1;
}

void  find_min_gen_n(int n)
{
	int max_min_gen = 0;//最小生成元集合中最大者
	int max_min_gen_of_num = 0;//最小生成元集合中最大者对应的数字
	for (int i = 2; i < n; i++)
	{
		if (!is_Prime(i))
			continue;
		int min_gen = find_min_generator(i);
		cout << "素数" << i << "的最小生成元为" << min_gen << endl;
		if (min_gen > max_min_gen)
		{
			max_min_gen = min_gen;
			max_min_gen_of_num = i;
		}
	}
	cout << "最小生成元集合中最大者对应的数字为" << max_min_gen_of_num << endl;
}

posted on 2023-11-30 17:08  尼古拉斯·铁柱  阅读(61)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3