数论基础

欧几里德算法

即求两个数的最大公因子

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值