数论基础

哥德巴赫猜想

任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。

任一大于7的奇数都可写成三个质数之和的猜想。后者称为“弱哥德巴赫猜想”或“关于奇数的哥德巴赫猜想”。

比较特殊情况的偶数2,本身为质数

最大公约数

d|a,代表d可以整除a,a=k*d。a是d的倍数,d是a的约数,
性质:gcd(a,b)是a与b的线性组合集合 ax+by 中的最小正整数。
欧几里得算法:

int gcd(int a,int b){
	if(b==0)return a;
	return gcd(b,a%b);
}

扩展欧几里得算法的应用

作用: 得到ax+by=gcd(a,b)的整数解

写的很好

在这里插入图片描述

int extgcd(int a,int b,int& x,int& y){//返回值是a,b的最大公约数 
	int d=a;
	if(b!=0){
		d=extgcd(b,a%b,x,y);
		int x1=x,y1=y;
		x=y1;
		y=x1-(a/b)*y1;
	}
	else{
		x=1;y=0;
	}
	return d;
}

求最小正整数模板

LL e_gcd(LL a,LL b,LL &x,LL &y)
{
    if(b==0)
    {
        x=1;
        y=0;
        return a;
    }
    LL ans=e_gcd(b,a%b,x,y);
    LL temp=x;
    x=y;
    y=temp-a/b*y;
    return ans;
}
 
LL cal(LL a,LL b,LL c)
{
    LL x,y;
    LL gcd=e_gcd(a,b,x,y);
    if(c%gcd!=0) return -1;
    x*=c/gcd;//转化为a*x+b*y=c的解
    b/=gcd;//约去c后原来b就变为了b/gcd;
    if(b<0) b=-b;//如果b为负数就去绝对值
    LL ans=x%b;
    if(ans<=0) ans+=b;//求最小正整数解
    return ans;//返回的就是最小正整数解
}
这个地方给大家推荐一个博客http://blog.csdn.net/zhjchengfeng5/article/details/7786595(写的非常奈斯)

求乘法逆元

在这里插入图片描述

裴蜀定理

裴蜀定理:

    对于任何整数a,b且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别的,一定存在整数x,y使得ax+by=d成立。

重要推论:

    a,b互质的充要条件是存在整数x,y使得ax+by=1。

线性同余方程

在这里插入图片描述

用模的逆来求解线性同余方程

在这里插入图片描述

中国剩余定理

写的很好

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页