数论基础

本文介绍了数论的基础概念,包括欧几里德算法求最大公因子,扩展欧几里德算法求解线性同余方程,线性筛素数方法,唯一分解定理,欧拉函数的计算,以及如何求乘法逆元,详细讨论了费马小定理和三种求逆元的方法。
摘要由CSDN通过智能技术生成

欧几里德算法

即求两个数的最大公因子

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

扩展欧几里德算法

它可以用来求解ax + by = c(a,b,c为整数)的方程的一组整数解,事实上,只有GCD(a,b) | c时,此方程才有整数解。具体实现

这里写图片描述

ll exgcd(ll a,ll b,ll& x,ll& y)
{
    ll d = a;
    if(b != 0) {
        d = exgcd(b,a % b,y,x);
        y -= (a / b) * x;
    }
    else {
        x = 1,y = 0;
    }
    return d;
}

根据扩展欧几里德求ax+by=c的最小正整数解,先得到ax + by = gcd(a,b)的解(x0,y0),如果c能整除gcd(a,b)则表明该方程有解,x1 = (x0 * c / (gcd(a,b)),最小正整数解为(x1 % (b / gcd(a,b) + b / gcd(a,b)) % (b / gcd(a,b))。

线性筛素数

时间复杂度O(n)

#in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值