欧几里德算法
即求两个数的最大公因子
int GCD(int a,int b)
{
if(b == 0) return a;
else return GCD(b,a % b);
}
扩展欧几里德算法
它可以用来求解(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的最小正整数解,先得到的解,如果c能整除则表明该方程有解,,最小正整数解为(x1 % (b / gcd(a,b) + b / gcd(a,b)) % (b / gcd(a,b))。
线性筛素数
时间复杂度O(n)
#in