标签:exgcd size include 数学推导 sdn phi 因此 scanf fine
一.辗转相处模板&&扩欧求逆元模板
blog:https://blog.csdn.net/m0_37579232/article/details/81428065
https://blog.csdn.net/m0_37579232/article/details/89810566
int gcd(int x,int y)
{
return y?gcd(y,x%y):x;
}
//exgcd 扩欧求逆元
int exgcd(int a,int b,int &x,int &y)//calc ax+by=gcd(a,b);
{
if(b==0)
{
x=1,y=0;
return a;
}
int g=exgcd(b,a%b,y,x);
y-=a/b*x;
return g;
}
int exgcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1,y=0;
return a;
}
else
{
int g=exgcd(b,a%b,y,x);
y-=a/b*x;
return g;
}
}
注意以下情况:
1.如果要求解ax+by=k不定方程的解,当且仅当k|gcd(a,b)时有解
2.求ax+by=k的解,先求ax+by=gcd(a,b)的解,
那么x0=x*k/gcd(a,b),y0=y*k/gcd(a,b);为所需的解
3.如何求该不定方程的最小正整数解??
x=((x*K/gcd(a,b))%(b/gcd(a,b))+(b/gcd(a,b)))%(b/gcd(a,b));
二.欧拉函数
https://baike.baidu.com/item/%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0/1944850?fr=aladdin
https://blog.csdn.net/sentimental_dog/article/details/52002608
/欧拉函数
//法一:根据定义直接得出
int euler(int n)
{
int res=n,a=n;
for(int i=2;i*i<=a;i++)
{
if(a%i==0)
res=res/i*(i-1);
while(a%i==0)
a/=i;
}
if(a>1) res=res/a*(a-1);
return res;
}
//法二:同时完成欧拉筛+欧拉函数的计算
int m[N],phi[N],p[N],nump;
//m存储第i个数是否为素数,phi[i]存储第i个数的欧拉函数值
//p[i]存储第i个素数,nump存储p数组的大小
void calc()
{
phi[1]=1;
for(int i=1;i<=n;i++)
{
if(!m[i])
{
p[++nump]=i;
phi[i]=i-1;
}
else
{
for(int j=1;j<=nump&&p[j]*i<=n;j++)
{
m[p[i]*i]=1;
if(i%p[j]==0)
phi[i*p[j]]=phi[i]*p[j];
else
phi[i*p[j]]=phi[i]*(p[j]-1);
}
}
}
}
三.筛法求素数
https://www.luogu.org/problemnew/solution/P3383
例题:https://www.luogu.org/problem/P3383
#include<cstdio>
#include<cstring>
#define N 10000002
using namespace std;
int n,m,pn,t;
bool prime[N];
int Prime[N];
inline void Sieve()
{
memset(prime,true,sizeof(prime));
prime[0]=prime[1]=false;
for(int i=2;i<=n;i++)
{
if(prime[i])
{
Prime[pn++]=i;
}
for(int j=0;j<pn&&Prime[j]*i<=n;j++)
{
prime[Prime[j]*i]=false;
if(i%Prime[j]==0)
break;
}
}
return;
}
int main()
{
scanf("%d %d",&n,&m);
Sieve();
for(int i=1;i<=m;i++)
{
scanf("%d",&t);
if(prime[t])
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
四.积性函数
https://baike.baidu.com/item/%E7%A7%AF%E6%80%A7%E5%87%BD%E6%95%B0/8354949?fr=aladdin
五.费马小定理
对于素数p和整数a,若(a,b)=1,则a的p-1次幂膜p余1;
标签:exgcd size include 数学推导 sdn phi 因此 scanf fine
原文地址:https://www.cnblogs.com/little-cute-hjr/p/11620127.html