当前位置: 首页 > article >正文

整数唯一分解定理

整数唯一分解定理,也称为算术基本定理,是由德国数学家高斯在其著作《算术研究》中首次提出的。本文回顾整数唯一分解定理以及对应的几个重要结论。
在这里插入图片描述

一、整数唯一分解定理

整数唯一分解定理,也称为算术基本定理,是数论中的一个重要定理。它指的是每个大于1的整数都可以唯一地表示为几个素数的乘积,而且这些素数的幂都是正整数。
n = p 1 a 1 ∗ p 2 a 2 ∗ … ∗ p k a k (1) n = p_1^{a_1} * p_2^{a_2} * … * p_k^{a_k}\tag1 n=p1a1p2a2pkak(1)

整数唯一分解的C++代码如下:

void IntDecompose(int n) {
	map<int,int> maps;  		//存储质数以及对应的幂
	int i = 2, e = 0;
	while (n != 1) {
		if (n % i == 0) {
			n /= i;
			maps[i]++;
		}
		else i++;
	}

	auto it = maps.begin();		//输出n对应的分解结果
	cout << n << "=" << it->first << "^" << it->second;
	for (++it; it != maps.end(); ++it)
		cout << " * " << it->first << "^" << it->second;
}

二、数的约数个数

根据整数唯一分解定理,可以得到一个结论: n n n 的正约数的个数为:
F ( n ) = ( a 1 + 1 ) ∗ ( a 2 + 1 ) ∗ ⋯ ( a k + 1 ) (2) F(n) = (a_1+1)*(a_2+1)*\cdots (a_k+1)\tag2 F(n)=(a1+1)(a2+1)(ak+1)(2)
证明:对于 p i a i p_i^{a_i} piai, 它包含的因子有: p i 0 , p i 1 , p i 2 , ⋯   , p i a i p_i^0, p_i^1,p_i^2,\cdots ,p_i^{a_i} pi0,pi1,pi2,,piai a i + 1 a_i+1 ai+1个因子。同时,还可以进行组合,具体而言,可以
p 1 p_1 p1中取1个因子,有 a i + 1 a_i+1 ai+1种取法;
p 2 p_2 p2中取1个因子,有 a 2 + 1 a_2+1 a2+1种取法;
…;
p k p_k pk中取1个因子,有 a k + 1 a_k+1 ak+1种取法。
然后将他们连乘起来。
总的数目为: F ( n ) = ( a 1 + 1 ) ∗ ( a 2 + 1 ) ∗ ⋯ ( a k + 1 ) F(n) = (a_1+1)*(a_2+1)*\cdots (a_k+1) F(n)=(a1+1)(a2+1)(ak+1)

三、最大公约数和最小公倍数

给定两个数 x x x y y y,他们可以分解为相同素数的幂的乘积:
x = p 1 a 1 ∗ p 2 a 2 ∗ … ∗ p k a k x = p_1^{a_1} * p_2^{a_2} * … * p_k^{a_k} x=p1a1p2a2pkak y = p 1 b 1 ∗ p 2 b 2 ∗ … ∗ p k b k (3) y = p_1^{b_1} * p_2^{b_2} * … * p_k^{b_k} \tag3 y=p1b1p2b2pkbk(3)
例如:给定 x = 100 , y = 210 x = 100, y = 210 x=100,y=210 则:
100 = 2 2 ∗ 3 0 ∗ 5 2 ∗ 7 0 100 = 2^2 * 3^0 *5^2*7^0 100=22305270 210 = 2 1 ∗ 3 1 ∗ 5 1 ∗ 7 1 210=2^1 * 3^1 * 5^1 *7^1 210=21315171

3.1 最大公约数

给定式(3)所示的两个数 x , y x,y x,y, 它们的最大公约数为:
gcd ( x , y ) = p 1 m i n ( a 1 , b 1 ) ∗ p 2 m i n ( a 2 , b 2 ) ∗ … ∗ p k m i n ( a k , b k ) (4) \text{gcd}(x,y) = p_1^{min(a_1,b_1)} * p_2^{min(a_2,b_2)} * … * p_k^{min(a_k,b_k)} \tag4 gcd(x,y)=p1min(a1,b1)p2min(a2,b2)pkmin(ak,bk)(4)
简单证明:
首先, gcd ( x , y ) \text{gcd}(x,y) gcd(x,y) 一定能整除 x x x y y y。因为这里所有素数的幂都是取的较小者,即 p i p_i pi 的幂为 m i n ( a i , b i ) min(a_i,b_i) min(ai,bi), 所以 p i m i n ( a i , b i ) ∣ p i a i p_i^{min(a_i,b_i)} | p_i^{a_i} pimin(ai,bi)piai p i m i n ( a i , b i ) ∣ p i b i p_i^{min(a_i,b_i)} | p_i^{b_i} pimin(ai,bi)pibi。 因此 gcd ( x , y ) \text{gcd}(x,y) gcd(x,y) 一定能够整除 x x x y y y

那么,为什么 gcd ( x , y ) \text{gcd}(x,y) gcd(x,y) x x x y y y 的最大公约数呢?这里使用反证法。
假设 g g g 才是 x x x y y y 的最大公约数。
那么,必然存在 g g g 包含的某个素数 p i p_i pi 的指数 c i > m i n ( a i , b i ) c_i > min(a_i,b_i) ci>min(ai,bi)
但是,此时 p i c i p_i^{c_i} pici 要么不能整除 p i a i p_i^{a_i} piai, 要么不能整除 p i b i p_i^{b_i} pibi
因此, g g g 不能同时整除 x x x y y y
所以,与假设矛盾, gcd ( x , y ) \text{gcd}(x,y) gcd(x,y) 才是 x x x y y y 的最大公约数。

3.2 最小公倍数

给定式(3)所示的两个数 x , y x,y x,y, 它们的最小公倍数为:
lcm ( x , y ) = p 1 m a x ( a 1 , b 1 ) ∗ p 2 m a x ( a 2 , b 2 ) ∗ … ∗ p k m a x ( a k , b k ) (5) \text{lcm}(x,y) = p_1^{max(a_1,b_1)} * p_2^{max(a_2,b_2)} * … * p_k^{max(a_k,b_k)} \tag5 lcm(x,y)=p1max(a1,b1)p2max(a2,b2)pkmax(ak,bk)(5)
证明过程与最大公约数类似。

有了最大公约数和最小公倍数的定义,我们得出一个重要的结论:
x y = gcd ( x , y ) ∗ lcm ( x , y ) (4) xy = \text{gcd}(x,y)*\text{lcm}(x,y)\tag4 xy=gcd(x,y)lcm(x,y)(4)
因为 :
( p 1 m i n ( a 1 , b 1 ) ∗ p 2 m i n ( a 2 , b 2 ) ∗ … ∗ p k m i n ( a k , b k ) ) ∗ ( p 1 m a x ( a 1 , b 1 ) ∗ p 2 m a x ( a 2 , b 2 ) ∗ … ∗ p k m a x ( a k , b k ) ) = p 1 a 1 + b 1 ∗ p 2 a 2 + b 2 ∗ … ∗ p k a k + b k = x y \left(p_1^{min(a_1,b_1)} * p_2^{min(a_2,b_2)} * … * p_k^{min(a_k,b_k)}\right) *\left(p_1^{max(a_1,b_1)} * p_2^{max(a_2,b_2)} * … * p_k^{max(a_k,b_k)}\right) = p_1^{a_1+b_1} * p_2^{a_2+b_2} * … * p_k^{a_k+b_k}=xy (p1min(a1,b1)p2min(a2,b2)pkmin(ak,bk))(p1max(a1,b1)p2max(a2,b2)pkmax(ak,bk))=p1a1+b1p2a2+b2pkak+bk=xy


http://www.kler.cn/a/397854.html

相关文章:

  • centos7 升级openssl 与升级openssh 安装卸载 telnet-server
  • .Net Core根据文件名称自动注入服务
  • Godot的开发框架应当是什么样子的?
  • 六自由度双足机器人运动控制
  • 计算机网络 (3)计算机网络的性能
  • pytest在conftest.py中实现用例执行失败进行截图并附到allure测试报告
  • (干货)Jenkins使用kubernetes插件连接k8s的认证方式
  • MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中
  • 连续九届EI稳定|江苏科技大学主办
  • pytest在conftest.py中实现用例执行失败进行截图并附到allure测试报告
  • Qt篇——简单调用yolov3模型识别常见物品
  • apk反编译修改教程系列-----apk应用反编译中AndroidManifest.xml详细代码释义解析 包含各种权限 代码含义【一】
  • 推荐一个超漂亮ui的网页应用设计
  • C#版使用融合通信API发送手机短信息
  • P1325 雷达安装
  • 如何在 Ubuntu 22.04 LTS 上安装 Nextcloud
  • antd proFromSelect 懒加载+模糊查询
  • 基于BERT的情感分析
  • 若依笔记(十):芋道的菜单权限与数据隔离
  • 从0开始机器学习--Day23--支持向量机
  • Python的Matplotlib
  • LoFTR: Detector-Free Local Feature Matching with Transformers—特征点匹配算法系列
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • Vue3 -- 项目配置之husky【企业级项目配置保姆级教程4】
  • 【青牛科技】D4147漏电保护电路介绍及应用
  • 刘艳兵-DBA038-以下关于Oracle SGA和PGA的描述中,哪些是正确的?