整数唯一分解定理
整数唯一分解定理,也称为算术基本定理,是由德国数学家高斯在其著作《算术研究》中首次提出的。本文回顾整数唯一分解定理以及对应的几个重要结论。
一、整数唯一分解定理
整数唯一分解定理,也称为算术基本定理,是数论中的一个重要定理。它指的是每个大于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=p1a1∗p2a2∗…∗pkak(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=p1a1∗p2a2∗…∗pkak 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=p1b1∗p2b2∗…∗pkbk(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=22∗30∗52∗70 210 = 2 1 ∗ 3 1 ∗ 5 1 ∗ 7 1 210=2^1 * 3^1 * 5^1 *7^1 210=21∗31∗51∗71
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+b1∗p2a2+b2∗…∗pkak+bk=xy
相关文章:

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

Grass脚本2倍速多账号
前言,小编也是第一次撸空投,我是抱着试一试的态度,梦想总是要有的万一白嫖了呢 Grass 是什么? Grass 扩展程序是一款创新的工具,它可以帮助您释放未使用的网络资源的力量。 通过分享您的剩余带宽,您可以赚…...

15分钟学 Go 第 56 天:架构设计基本原则
第56天:架构设计基本原则 学习目标 理解和掌握基本的架构设计原则,以提升软件系统的可维护性、可扩展性和可重用性。 内容提纲 架构设计原则概述常见架构设计原则 单一职责原则 (SRP)开放/封闭原则 (OCP)里氏替换原则 (LSP)接口分离原则 (ISP)依赖反…...

HTML5 Video(视频)
HTML5 Video(视频) HTML5视频是现代网页设计中不可或缺的一部分,它允许开发者在网页中嵌入视频内容,为用户提供丰富多样的媒体体验。本文将深入探讨HTML5视频的各个方面,包括其基本用法、支持的格式、自定义播放器、浏览器兼容性以及最佳实践。 一、HTML5视频的基本用法 …...

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-串行调用多个tools(三)
一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…...

MySQL:表设计
表的设计 从需求中获得类,类对应到数据库中的实体,实体在数据库中表现为一张一张的表,类中的属性就对应着表中的字段(也就是表中的列) 表设计的三大范式: 在数据库设计中,三大范式࿰…...

173. 二叉搜索树迭代器【 力扣(LeetCode) 】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 173. 二叉搜索树迭代器 一、题目描述 实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器: BSTIterato…...

大三学生实习面试经历(1)
最近听了一位学长的建议,不能等一切都准备好再去开始,于是就开始了简历投递,恰好简历过了某小厂的初筛,开启了线上面试,记录了一些问题: (通过面试也确实了解到了自己在某些方面确实做的还不够…...

【论文复现】STM32设计的物联网智能鱼缸
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀STM32设计的物联网智能鱼缸 【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成 1.2 设计思路【1】整体设计思路【2】ESP8266工作模式…...

常见长选项和短选项对应表
长选项和短选项的等效形式 在命令行工具中,这种长选项(如--delete)和短选项(如-d)等效的情况很常见。例如--verbose和-v(用于输出详细信息),--quiet和-q(用于安静模式&a…...

Ubuntu24 上安装搜狗输入法
link 首先在终端中依次输入以下代码 sudo apt update sudo apt install fcitx 找到语言支持 在终端中依次输入 sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/ sudo apt purge ibus 进入网页 搜狗输入法linux-首页 shurufa.sogou.com/linux 找到刚才下…...

【AI图像生成网站Golang】JWT认证与令牌桶算法
AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 三、JWT认证与令牌桶算法 在现代后端开发中,用户认证和接口限流是确保系统安全性和性能的两大关键要素…...
关于强化学习的一份介绍
在这篇文章中,我将介绍与强化学习有关的一些东西,具体包括相关概念、k-摇臂机、强化学习的种类等。 一、基本概念 所谓强化学习就是去学习:做什么才能使得数值化的收益信号最大化。学习者不会被告知应该采取什么动作,而是必须通…...

Python3.11.9+selenium,获取图片验证码以及输入验证码数字
Python3.11.9+selenium,获取图片验证码以及输入验证码数字 1、遇到问题:登录或修改密码需要验证码 2、解决办法: 2.1、安装ddddocr pip install ddddocr 2.2、解析验证码函数 import ddddocr def get_capcha_text():#获取验证码图片ele_pic = driver.find_element(By.XPAT…...

Flutter:事件队列,异步操作,链式调用。
Flutter分2种队列 1、事件队列:异步的处理,按顺序执行 import package:flutter/material.dart; main(){testFuture1();testFuture2(); }// 按顺序执行处理A->B->C testFuture1() async {Future((){return 任务A;}).then((value){print(按顺序执行&…...

从零开始学习 sg200x 多核开发之 eth0 自动使能并配置静态IP
前文提到 sophpi 默认没有使能有线网络,需要手工配置: [rootsg200x]~# ifconfig eth0 up [rootsg200x]~# udhcpc -i eth0 [rootsg200x]~# ifconfig eth0 Link encap:Ethernet HWaddr EA:BD:18:08:1E:87 inet addr:192.168.188.142 Bcast:192.1…...

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信
《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信 运用进程间通信习题(1)什么是进程间通信&…...

开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
一、前言 Qwen-Agent 是一个利用开源语言模型Qwen的工具使用、规划和记忆功能的框架。其模块化设计允许开发人员创建具有特定功能的定制代理,为各种应用程序提供了坚实的基础。同时,开发者可以利用 Qwen-Agent 的原子组件构建智能代理,以理解和响应用户查询。 本篇将介绍如何…...

通过声纹或者声波来切分一段音频
通过声纹识别或基于声波特征的模型,确实可以帮助切分一段音频并区分出不同讲话者的语音片段。这种技术被称为 基于声纹的语音分割 或 基于说话人识别的音频分割。其核心原理是利用每个说话者的 声纹特征(即每个人独特的语音特征)来识别和切分…...

sql专场练习(二)(16-20)完结
第十六题 用户登录日志表为user_id,log_id,session_id,visit_time create table sql2_16(user_id int,log_id int,session_id int,visit_time string );没有数据 visit_time 时间格式为2024-11-15 用sql查询近30天每天平均登录用户数量 with t1 as (select visit_time,coun…...

[ 网络安全介绍 2 ] 网络安全发展现状
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

《基于Oracle的SQL优化》读书笔记
查看执行计划set autotrace traceonly explain在当前session中将优化器模式改为RULE。alter session set optimizer_modeRULE;统计信息存储在oracle的数据字典里,且从多个维度描述了oracle数据库里相关对象的实际数据量,实际数据分布等详细信息。 -- 对…...

零基础利用实战项目学会Pytorch
目录 pytorch简介 1.线性回归 2.数据类型 2.1数据类型检验 2.2Dimension0/Rank0 2.3 Dim1/Rank1 2.4 Dim2/Rank2 3.一些方法 4.Pytorch完成分类任务 4.1模型参数 4.2 前向传播 4.3训练以及验证 4.4 三行搞定! 4.5 准确率 5、Pytorch完成回归任务 5.…...

Go八股(Ⅵ)Goroutine 以及其中的锁和思想
Goroutine与并发编程的关系 什么是并发 是指多个任务在同一时间段内进行处理,但不一定是在同一时刻执行。并发强调的是“结构上的并行性”,也就是说,程序能够在一个时间端内同时处理多个任务,但是这些任务可能是交替进行的。例如…...

向潜在安全信息和事件管理 SIEM 提供商提出的六个问题
收集和解读数据洞察以制定可用的解决方案是强大网络安全策略的基础。然而,组织正淹没在数据中,这使得这项任务变得复杂。 传统的安全信息和事件管理 ( SIEM ) 工具是组织尝试使用的一种方法,但由于成本、资源和可扩展性等几个原因࿰…...
蓝桥杯每日真题 - 第15天
题目:(钟表) 题目描述(13届 C&C B组B题) 解题思路: 理解钟表指针的运动: 秒针每分钟转一圈,即每秒转6度。 分针每小时转一圈,即每分钟转6度。 时针每12小时转一圈…...

Python的Matplotlib
介绍: Matplotlib 是一个非常强大的 Python 绘图库,支持多种不同类型的图表。以下是 Matplotlib 支持的一些常见图表类型: 前情提要: from matplotlib import rcParams# 设置支持中文的字体 rcParams[font.sans-serif] [SimHei…...

Python数据分析:分组转换transform方法
大家好,在数据分析中,需要对数据进行分组统计与计算,Pandas的groupby功能提供了强大的分组功能。transform方法是groupby中常用的转换方法之一,它允许在分组的基础上进行灵活的转换和计算,并将结果与原始数据保持相同的…...

高效灵活的Django URL配置与反向URL实现方案
高效灵活的Django URL配置与反向URL实现方案 目录 📑 1. 基本的Django URL配置及反向URL的实现 🔧 2. 使用path()替代re_path()配置URL的优势与劣势 🛠️ 3. 使用URL命名空间(namespace)提高URL管理的可维护性 &…...

深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践 引言 MySQL 是全球最受欢迎的开源关系型数据库之一,其高性能、灵活性和广泛的社区支持使其成为无数开发者的首选。然而,部署一台高效、稳定的 MySQL 实例并非易事。本文将结合一个实际…...