【数轮】数论、质数、最大公约数、菲蜀定理

数学

唯一分解定理

n>=2都可以表示为质因数的乘方。
令 n = a1b1a2b2 … \dots
a1,b1 … \dots 都是质因数,b1,b2 … \dots 是对应质因数的数量。

调和级数

1+1/2 + 1/3 +1/4 ⋯ \cdots 1/ n 约等于 logn。
证明过程:
1/3 + 1/4 < (1/2) × \times × 2 = 1
1/5 + 1/6 + 1/7 + 1/8 < (1/4) × \times × 4 = 1
1/9+1/10+…1/16 < (1/8) × \times × 8 = 1
⋮ \vdots
1/2^(m-1)+ ⋯ \cdots + 1/2m < 1

区间公约数

n个数,那些数对非互质。两两枚举,时间复杂度是O(nn)。
令这些数最大值为m,枚举那些数是x$\in[2,m]的倍数,则时间复杂度是O(nlogn)。
一,相同值如果大于1,非互质。
二,如果同时x>1的倍数,非互质。
转化成并集查找计算连通区域,注意:两个连通区域合并,只需要从2个联通区域任取一点相连。

质数

质数分解

x的质因数中最多有一个大于 x \sqrt x x 。反证法:如果有两个质因数大于 x \sqrt x x ,则它们相乘大于 x × x \sqrt x \times \sqrt x x ×x ,和所有质因数相乘等于x矛盾。
小于等于x的质因数可以直接枚举。如何寻找大于 x \sqrt x x 的质因数?
x 如果包括小于等于 x \sqrt x x 的质因数x1,则x ÷ \div ÷=x1。直到不包括小于等于 x \sqrt x x 的质因数。如果此时x>1,则此时的x也是质因数。

for (int i = 0; i < nums.size(); i++) {
			int tmp = nums[i];
			for (auto& iPri : vPrime) {
				if (iPri * iPri > tmp) { break; }
				if (0 == tmp % iPri) { indexs[iPri].emplace_back(i); }
				while ((0 == tmp % iPri)) {
					tmp /= iPri;
				}
			}
			if( tmp > 1){ indexs[tmp].emplace_back(i); }
		}

埃氏筛

如何寻找[1,m]所有质数。从2其,如果i是质数,则将i的x倍(x>1)标记位非质数。时间复杂度:O(nlogn),logn是调和级数的和。

vector<int> CreatePrime(int iMax)
{
	vector<int> vNo(iMax + 1);
	vector<int> vPrime;
	for (int i = 2; i <= iMax; i++)
	{		
		if (!vNo[i])
		{
			vPrime.emplace_back(i);
		}
		for (const auto& n : vPrime)
		{
			if( n * i > iMax )
			{
				break;
			}
			vNo[n * i] = true;
		}		
	}
	return vPrime;
}

欧拉筛(线性筛)

埃氏筛枚举了所有a × \times ×b,其中a是质数,b是任意数。
欧拉筛增加了新条件:a <= b的最小质因数,也就a 是 a × \times ×b 的最小质因数。因为任意数的最小质因数都只有一个,故不会重复。故时间复杂度:O(n)
以12为例:
埃氏筛枚举了2次,2 × \times × 6 ,3 × \times × 4。
欧拉筛:只枚举了 2 × \times × 6 。4 枚举完2后,就结束了。
在这里插入图片描述

代码

vector<int> CreatePrime(int iMax)
{
	vector<bool> isPrime(iMax + 1,true);
	vector<int> vPrime;
	for (int i = 2; i <= iMax; i++)
	{
		if (isPrime[i])
		{
			vPrime.emplace_back(i);
		}
		for (const auto& n : vPrime)
		{
			if (n * i > iMax){break;}
			isPrime[n * i] = false;
			if (0 == i % n) { break; }
		}
	}
	return vPrime;
}

最大公约数

gcc,vc都有gcd函数,可以直接使用。

辗转相减法

求a,b的最大公约数。如果a,b相等,则a就是公约数。下面只讨论两者不等。
不失一般性,令a > b,其最大公约数为q。a = a1q,b=b1q ,令a - b =(a1-b1)q =c1q= c。则q也是(c,b)的公约数。
我们用反证法来证明c,b没有大于q的公约数。假定c,b有大于q的公约数q1,则a = (b2+c2)q2 ,b = b2q2。a,b也有公约数q2,和a,b的最大公约数是q矛盾。
不断持续此过程,可以保持公约数不变的情况下,让max(a,b)变小。由于a>b,故c >= q。经过有限回合,c一定变成q,b变成q后,a每次也减少q,直到a也变成q。

辗转相除法(欧几里得)求最大公约数

( a , b ) → 不失一般性,令 a > = b ( c = a m o d    b , d = b ) → 不失一般性,令 c > = d ( e = c m o d    d , f = d ) ⋯ (a,b)^{不失一般性,令a >= b}_\rightarrow (c= a \mod b,d= b) ^{不失一般性,令c >= d}_\rightarrow (e=c \mod d,f=d) \cdots (a,b)不失一般性,令a>=b(c=amodb,d=b)不失一般性,令c>=d(e=cmodd,f=d)
直到最后的两个数一个为0,则公约数是另外一个。比如:e为0,最大公约数就是f。f为0,最大公约数为e。
a,b不断变小,有限次数一定有一个数变为0。
令某两个数的最大公约数为q, 则这两个数可以表示为 q × a , q × b 则 q × ( a m o d    b ) , q × b 的最大公约数为 q 则这两个数可以表示为q \times a,q \times b 则 q \times (a \mod b) , q \times b 的最大公约数为q 则这两个数可以表示为q×a,q×bq×(amodb),q×b的最大公约数为q
a%b 为0,也符合数学定义: 0和任何数x的最大公约数是x。

二进制求公约数

求a,b的最大公约数。
一,如果a,b都是偶数,则GCD(a,b) = 2*GCD(a,b)。
二,如果a 是偶数,b是奇数(反之类似)。GCD(a,b)=GCD(a/2,b)。b是奇数,所以他们的公约数不包括2。
三,两者都是奇数。
3.1,两者相等。a就是最大公约数。
3.2,a b不等,不失一般性,令a>b。GCD(a,b) == GCD(a+b,b) == GCD((a+b)/2,b)
由于a,b是不断变小,一定会相等。

菲蜀定理

【数学归纳法 反证法】菲蜀定理

题解

质数判断、分解
【分解质因数 差分数组】2584. 分割数组使乘积互质
【状态机dp 状态压缩 分组】1994. 好子集的数目
【唯一分解定理 数学】1808好因子的最大数目
【单调栈】LeetCode:2818操作使得分最大
最大公约数
【栈 最小公倍数 最大公约数】2197. 替换数组中的非互质数
【最大公约数 排序】2344. 使数组可以被整除的最少删除次数
【二进制求公约数】【数学】【数论】2543. 判断一个点是否可以到达
【最大公约数】2862. 完全子集的最大元素和
区间最大公约数:调和级数o(nlogn)
【并集查找 最大公约数 调和数】952. 按公因数计算最大组件大小
【数论 最大公约数 调和数】【最大公约数】1819. 序列中不同最大公约数的数目
【最大公约数 调和级数】2183.统计可以被 K 整除的下标对数目
【调和级数 并集查找】1627. 带阈值的图连通性
【最大公约 调和奇数 并集查找】2709. 最大公约数遍历
菲蜀定理
【菲蜀定理 子序列】1250 检查「好数组」
唯一分解定理
【唯一分解定理】【动态规划】【前缀和】1735生成乘积数组的方案数
类似区间公约数
【动态规划】【前缀和】【分组】2338. 统计理想数组的数目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/620155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea已配置的git仓库地址 更换新的Git仓库地址 教程

文章目录 目录 文章目录 更改流程 小结 概要更改流程技术细节小结 概要 先在idea控制台走一下流程 先将本地的git仓库删除 1. 查看当前远程仓库地址&#xff1a; 在终端或命令行中&#xff0c;导航到你的项目目录&#xff0c;并运行以下命令查看当前的远程仓库地址&#xff…

CTF之love_math

这个题目简单看一下就知道要传参进行执行系统命令以达到找到flag的目的。 但是又可以发现过滤了很多东西。 这个题的绕过方法可以用到三个函数 base_convert(number,froombase,tobase)//分别为原始值&#xff0c;原来进制&#xff0c;要转换的进制dechex("十进制数"…

气膜建筑电源配置是怎样的—轻空间

在气膜建筑中&#xff0c;电源配置是确保建筑控制系统连续运行的重要组成部分。以下是该建筑的电源配置方案&#xff1a; 1. 市电供电与备用发电机&#xff1a; 为了应对市电中断等突发情况&#xff0c;系统采用市电供电与备用柴油发电机双重供电方式。这种配置保证了即使在市电…

JDK APT(Annotation Processing Tool) 编译时注解处理器

博文目录 文章目录 javacAnnotation ProcessingHow Annotation Processing WorksCompilation Environment and Runtime Environment maven-compile-plugin对 Maven pom 中配置注解处理器的理解Lombok, MapStruct, MyBatis-Flex 说明测试只在 dependencies 中配置 Lombok 和 Ma…

【网络安全】适合新手的CTF靶场合集(非常详细)零基础入门到精通,收藏这一篇就够了

前言 经常会有粉丝朋友询问大白&#xff0c;如何打CTF比赛&#xff0c;有没有适合新手的CTF靶场&#xff1f; 今天呢大白就给粉丝朋友分享一下&#xff0c;我整理得可能没有那么全&#xff0c;这里的合集主要还是面对新手。做题贵精不在多&#xff0c;好好练习每一题&#xf…

STM32 PWM 计数器模式和对齐

STM32 PWM 计数器模式和对齐 1. TIM高级定时器简介2. TIM计数模式2.1 向上计数2.2 向下计数2.3 中心对齐模式&#xff08;向上/向下计数&#xff09;2.4 重复计数 3. PWM输出模式3.1 举例看下PWM中心对齐模式&#xff0c;设置参数如下&#xff1a; 4. FOC中PWM相关设置说明4.1 …

其他的 框架安全:Apache Shiro 漏洞序列.(CVE-2016-2807)

什么是 Apache Shiro Apache Shiro 是一个强大且易用的Java安全框架&#xff0c;它为应用程序提供了身份验证、授权、加密和会话管理等常见的安全功能。漏洞大多会发生在登录处&#xff0c;返回包里包含remeberMedeleteMe字段.&#xff08; Shiro 这个属于第三方的&#xff0c…

Linux线程(三)死锁与线程同步

目录 一、什么是死锁 死锁的四个必要条件 如何避免死锁 避免死锁算法 二、Linux线程同步 三 、条件变量 1、条件变量基本原理 2、条件变量的使用 3、条件变量使用示例 为什么 pthread_cond_wait 需要互斥量? 一、什么是死锁 死锁是计算机科学中的一个概念&#xff0c;…

Qt---绘图和绘图设备

一、QPainter绘图 绘图事件 void paintEvent() 声明一个画家对象&#xff0c;OPainter painter(this) this指定绘图设备 画线、画圆、画矩形、画文字 设置画笔QPen 设置画笔宽度、风格 设置画刷QBrush 设置画刷风格 代码示例&#xff1a; #includ…

买一手股指期货跌多少会爆仓?

当指数下跌导致持有的股指期货合约价值减少&#xff0c;而你的保证金账户中的资金不足以维持原有的保证金要求时&#xff0c;期货公司会要求你追加保证金&#xff0c;即所谓的“追加保证金通知”。如果投资者无法及时补足保证金&#xff0c;期货公司则有权强制平仓&#xff0c;…

【Linux】磁盘文件

思维导图 学习目标 了解磁盘的物理结构和存储结构&#xff0c;并将其存储结构进行抽象&#xff01;&#xff01; 一、了解一下磁盘及其物理结构 1.1 计算机只认识二进制 什么是二进制&#xff1f;&#xff1f;0&#xff0c;1是被规定出来的&#xff0c;在计算机里面我们用高低…

SAP 控制已转采购订单的PR不允许删除简介

SAP系统中采购申请当被转成采购订单后&#xff0c;在采购申请中会关联到对应已生生成的采购订单&#xff0c;如下图中可以看到采购申请对应的采购订单 当日常操作中用户在创建完采购申请后&#xff0c;当PR转成PO后仍然可以将采购申请的行项目进行删除&#xff0c;显然这个操作…

『拼多多、淘宝、抖音、小红书等卖家』4个有效动作,走出成单低谷期

对于拼多多、淘宝、抖音、小红书等平台的卖家来说&#xff0c;走出成单低谷期需要一系列有效的动作。以下是店雷达四个建议&#xff1a; 一、选品优化 1、深入市场研究&#xff1a;了解当前市场趋势、消费者需求和潜在的市场空白。使用各种工具&#xff0c;如店雷达选品功能&…

Python深度学习基于Tensorflow(2)Tensorflow基础

文章目录 基本操作数据转换和数据生成操作形状数据提取和保存变量Numpy和Tensorflow的比较 计算图静态图动态图自动图 自动微分使用Tensorflow 实现回归 首先是Tensorflow的安装&#xff0c;由于可能会出现版本冲突&#xff0c;最好在conda环境安装&#xff0c;同时&#xff0c…

华为OD机试 - 密码输入检测(Java 2024 C卷 100分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

leetcode经典例题之环形队列

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、题目展示2、问题分析3、完整代码展示4、结语 1、题目展示 在拿到题目时&#xff0c;通…

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …

如何快速提取出一个文件里面全部指定类型的文件的全部路径

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 打开工具&#xff0c;切换到第五个模块&#xff0c;文件批量复制模块&#xff08;快捷键&#xff1a;Ctrl5&#xff09; 点击右边的“搜索添加”按钮&#…

20 分页:较小的表

目录 简单的解决方案&#xff1a;更大的页 混合方法&#xff1a;分页和分段 多级页表 详细的多级示例 超过两级 ​编辑地址转换过程&#xff1a;记住TLB 反向页表 将页表交换到磁盘 之前提到的一个问题&#xff1a;就是页表太大&#xff0c;假设一个 32 位地址空间&…

高中数学:平面向量-基本概念

一、定义 有方向&#xff0c;且有大小的量&#xff0c;就叫向量 与之对应的是&#xff0c;数量&#xff0c;只有大小&#xff0c;没有方向 例如 A B → \mathop{AB}\limits ^{\rightarrow} AB→ a → \mathop{a}\limits ^{\rightarrow} a→ 二、相关性质 相等 大小相同…