首页 > 其他分享 >数学1(待完善)

数学1(待完善)

时间:2023-10-12 22:03:41浏览次数:26  
标签:完善 gcd int bmod times 数学 LL equiv

质数筛

线性筛法:
保证每个数都被其最小质因数给筛掉。

代码:

void solve()
{
	for(int i=2;i<=n;i++){
		if(!st[i])primes[++tot]=i;
		for(int j=1;j<=tot;j++){
			st[i*primes[j]]=true;
			if(i%primes[j]==0)break;//i的最小质因子为primes[j]
		}
	}
}

素性测试

判定\(x\)是否为质数

1.朴素方法:

复杂度\(O(\sqrt n)\)

代码:

for(int i=2;i<=n/i;i++){
	if(n%i==0)return false;
}
retrun true;

2.\(Miller Rabin\) 算法

给出一个奇素数\(p\),则\(p-1\)为偶数,设\(p-1=m\times 2^q\).

由费马小定理,\(a^{p-1}\equiv a^{m\times 2^q}\equiv 1(\bmod\) \(p)\)

\(a^{m\times 2^q}\equiv a^{(m\times 2^{q-1})^2}\equiv 1 (\bmod\) \(p)\)

所以\(a^{m\times 2^k}\equiv 1||(p-1)(\bmod\) \(p)(k\in Z,0\leq k< q)\)

则:

1.从\(0\)~\(q-1\)枚举\(k\)检验其是否满足\(a^{m\times 2^k}\equiv 1||-1(\bmod\) $ p)$

2.检验\(p\)是否满足费马小定理\(a^{p-1}\equiv 1(\bmod\) \(p)\)

可进行\(k\)轮检测,取不同的值\(a\),出错率为\(4^{-k}\)

时间复杂度:\(O(k\log n)\)

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL q_c(LL x,LL y,LL p) //快速乘 ,避免爆long long 
{
	LL res=0;
	while(y){
		if(y&1)res=(res+x)%p;
		x=(x+x)%p;
		y>>=1;
	}
	return res;
}
LL q_m(LL x,LL y,LL p)//快速幂 
{
	LL res=1;
	while(y){
		if(y&1)res=q_c(res,x,p);
		x=q_c(x,x,p);
		y>>=1;
	}
	return res;
}
bool miller_rebin(LL n)//判断n是否为质数 
{
	if(n==2)return true;//特判 
	if(n<2||n%2==0)return false;
	LL u=n-1,tt=0;
	while(u%2==0)u/=2,tt++;//求出q、m 
	for(int i=0;i<10;i++){
		LL a=rand()%(n-1)+1;//在1~n-1随机取值 
		LL x=q_m(a,u,n);
		if(x==1)continue;
		for(int j=1;j<=tt;j++){
			LL y=q_c(x,x,n);//相当于依次枚举k 
			if(y==1&&x!=1&&x!=n-1)return false;
			x=y;
		}
		if(x!=1)return false;//费马小定理(最后x的值为a^n-1 % n) 
	}
	return true;
}
int main()
{
	int n;
	cin>>n;
	while(n--){
		LL a;
		cin>>a;
		if(miller_rebin(a))puts("Yes");
		else puts("No");
	}
	return 0;
}

威尔逊定理

若\(p\)为质数,则$(p-1)!\equiv -1(\bmod $ \(p)\)

反之,若$(p-1)!\equiv -1(\bmod $ \(p)\),则\(p\)为质数

证明:

——————


唯一分解定理

任意正整数\(n\)可以写成 \(n=2^{a1}*3^{a2}*5^{a3}*…\) ,其中\(a1,a2,a3\)等为非负整数

证明:

——————


可整除性的基本性质

若 \(a|b\) , \(a|c\) 则 \(a|(b+c)\)

若 \(a|b\) 则对任何整数 \(c\) 满足 \(a|bc\)

若 \(a|b\) , \(b|a\), 则 \(a|c\) (传递性)


gcd和lcm

定理:\(x\times y=\gcd(x,y)\times \operatorname{lcm}(x,y)\)

证明:

由唯一分解定理:

设集合\(A\)为\(x\)的质因子,集合\(B\)为\(y\)的质因子

\(\gcd(x,y)=p_1^{\min(a_1,b_1)}\times p_2^{\min(a_2,b_2)}\times ...\times p_n^{\min(a_n,b_n)}(p_i\in A\cap B)\)

\(\operatorname{lcm}(x,y)=p_1^{\max(a_1,b_1)}\times p_2^{\max(a_2,b_2)}\times ...\times p_n^{\max(a_n,b_n)}(p_i\in A\cap B) \times q_1^{c_1}\times q_2^{c_2}\times ...\times q_m^{c_m}(q_i\in A \cup B,q_i \notin A \cap B)\)

即可得证


取模运算基本性质:(有效防止爆long long)

\((a+b)\bmod m=(a\bmod m+b\bmod m)\bmod m\)

\((a-b)\bmod m=(a\bmod m-b\bmod m)\bmod m\)

\((a*b)\bmod m=(a\bmod m*b\bmod m)\bmod m\)

除法不能满足上述性质,但是:

设 \(z\) 为 \(y\) 模 \(m\) 的逆元,则 \((x/y)\bmod m=(x\bmod m*z\bmod m)\bmod m\)


欧几里得算法

利用公式 \(\gcd(a,b)=\gcd(b,a\bmod b)\) , 复杂度为\(O(\log b)\)

代码

int gcd(int a,int b)
{
	return b? gcd(b,a%b):a;
}

辗转相减法(更相减损术):(似乎用来处理高精度)

——————


拓展欧几里得

裴蜀定理:对于不完全为0的非负整数 \(a,b\) ,必然存在整数对 \(x,y\) ,使得 \(\gcd(a,b)=ax+by\) 。

证明:

——————

代码:

设\(x,y\)和\(x_1,y_1\)是两组解,且满足:

\(\gcd(a,b)=ax+by\)

\(gcd(a,b)=gcd(b,a\bmod b)=bx_1+a\bmod b*y_1\)

则 \(ax+by=bx_1+a\bmod b*y_1\)

设 \(k=a/b,r=a\bmod b\) ,则:

\(bk+r=a\)

\(ax+by=bx_1+ry_1=bx_1+(a-bk)y_1=bx_1+(a-a/b*b)y_1\)

\(ax+by=ay_1+b(x_1-a/b*y_1)\)

所以 \(x=y_1,y=x_1-a/b*y_1\)

#include<bits/stdc++.h>
using namespace std;
int exgcd(int a,int b,int &x,int &y)//&不能漏 
{
	if(!b){
		x=1,y=0;
		return a;
	}
	int res=exgcd(a,b,x,y);
	int t=x;x=y;y=t-a/b*y;
	return res;
}
int main()
{
	return 0;
}

应用:

解不定方程\(ax+by=c\)

先用\(exgcd\)求出\(ax+by=\gcd(a,b)\)的解\(x_0,y_0\)

设\(\gcd(a,b)=d\)

若 $c\bmod d \ne 0 $则方程无解

方程的一组解为\(x_1=x_0c/d,y_1=y_0c/d\)

方程的一般解\(x=x_1+bk/d,y=y_1-ak/d(k\in Z)\)

\(x\) 的最小正整数解:\((x_1/(b/d)+b/d)\%(b/d)\),\(y\) 同理。

求解线性同余方程

对于\(ax\equiv b(\bmod m)(a,b,m\)为常数\()\)

可转化为\(ax=b+my\) 解不定方程

求解模的逆元

\(ax\equiv 1(\bmod m)(a,m\)为常数\()\)

解线性同余方程即可:

\(ax-my=1\)

——————


标签:完善,gcd,int,bmod,times,数学,LL,equiv
From: https://www.cnblogs.com/lzaqwq/p/17760662.html

相关文章

  • 数学2(待完善)
    中国剩余定理P1495【模板】中国剩余定理(CRT)/曹冲养猪问题:对于方程组\(x\equivb_1(\bmod\)\(p_1)\)\(x\equivb_2(\bmod\)\(p_2)\)……\(x\equivb_n(\bmod\)\(p_n)\)满足任意\(\gcd(p_i,p_j)=1\)求解\(x\)的最小正整数解思路:设\(mul=p_1\timesp_2\tim......
  • 数学符号
    一些可能会看到的数学符号。\(\gcd(x,y)\):最大公倍数。\(\operatorname{lcm}(x,y)\),最小公约数。\(a\vertb\):\(b\)可以被\(a\)整除。也就是\(a\)是\(b\)的因数。比如我们就可以说\(2\vert4\)。\(a\bmodb\):\(a\)除以\(b\)的余数。比如我们可以说\(5\bmod......
  • 数字水印数学基础
          ......
  • 数学专业级别考试提纲
    当涉及大学生数学和计算机专业的级别考试时,以下是一个详细的提纲内容,包含了四级、六级和八级考试的重点领域和知识点。请注意,具体的考试大纲可能因不同学校或考试机构而异,这里提供的是一个基本框架。数学专业级别考试提纲四级考试微积分极限与连续性导数与微分积分与定积......
  • 多项式 [计算机数学专题(7)]
                                               《目录》二项式定理无限次多项式单位根生成函数FFT多项式简介:https://en.wikipedia.org/wiki/Polynomial 定义     多项式求值 ......
  • 如何优雅地编写带数学公式的文章?(markdown+latex)
    如何优雅地编写带数学公式的文章?(markdown+latex)一千个读者眼里有一千个哈姆雷特,我见过用word编辑公式的同学,也有人用奇怪的符号组合来表示公式,当然最多的还是用latex编写这一类文章,但是就便利和美观的折中选择来说,本人认为用markdown+latex肯定是最好的选择,本文的写作方法就......
  • 组合数学与计数复习(二轮加强)
    组合数学与计数复习前言:自从发现,每次打codeforces或者模拟赛,看到“方案数mod998244353”就直接跳过了,这一次为了突破此类题,所以专门对其进行复习。题单:(洛谷)链接硬核知识:加法原理和乘法原理感觉就是同类的是加和,互不影响的是乘法。这个东西常常应用在dp的转移上。容斥......
  • 数学
     ......
  • MATLAB符号数学计算
       符号计算存放的是精确数据,耗存储空间,运行速度慢,但结果精度高;数值计算则是以一定精度来计算的,计算结果有误差,但是运行速度快。两者的区别是: 数值计算的表达式、矩阵变量中不允许有未定义的自由变量,而符号计算可以含有未定义的符号变量。一、符号对象和符号表达式close......
  • 组合数学习笔记
    一些式子\[(1+x)^\alpha=\sum_{i=0}\binom{\alpha}{i}x^i\\\binomnk=\fracnk\binom{n-1}{k-1}\\\binomnk=\binomn{k-1}+\binom{n-1}{k-1}\\\binomnm=(-1)^m\binom{m-n-1}m\\\binomnkk^{\underlinem}=\binom{n-m}{k-m}n^{\under......