简单数学模板
来源:互联网 发布:美国国税局 知乎 编辑:程序博客网 时间:2024/04/29 16:13
void get_prime(int n){//造素数 check[1]=1; for(int i=2;i<=n;i++){ if(!check[i])prime[tot++]=i; for(int j=0;j<tot;j++){ if(i*prime[j]>n)break; check[i*prime[j]]=1; if(i%prime[j]==0)break; } }}void P_M(int n){//求1~n的逆元 a[1]=1; for(int i=2;i<=n;i++) a[i]=1ll*(M-M/i)*a[M%i]%M;}ll gcd(ll a,ll b){//最大公因数 while(b)b^=a^=b^=a%=b; return a;}ll mul(ll a,ll b,ll p){//快速乘 ll res=0; while(b){ if(b&1)res=(res+a)%p; a=(a+a)%p; b>>=1; } return res;}bool check_prime(ll x,ll p){ ll i=ceil(log(p-1.0)/log(2.0)),d=1; for(;i>=0;i--){ ll tmp=d;d=mul(d,d,p); if(d==1&&tmp!=1&&tmp!=p-1)return false; if((p-1)&(1<<i))d=mul(d,x,p); } return d==1;}bool miller_rabin(ll n){//判素数 if(n==1)return false; for(int i=0;i<9;i++){ if(n==prime[i])return true; if(n%prime[i]==0)return false; } for(int i=0;i<9;i++) if(prime[i]<n&&!check_prime(prime[i],n))return false; return true;}ll Pollard_Rho(ll n,ll c){ ll x,y,d,i=1,k=2; x=mul(rand(),rand(),n-1)+1; y=x; while(1){ i++; x=(mul(x,x,n)+c)%n; d=gcd(y-x,n); if(d>1&&d<n)return d; if(y==x)return n; if(i==k){ y=x; k<<=1; } }}ll pri_fac[M],now[M];int tp,top;void dec_prime(ll n){//分解质因数 //dfs,不想写了 //在此递归调用Pollard_Rho //将n分解 }
3 0
- 简单数学模板
- 数学模板
- 数学模板
- 数学模板
- 数学模板
- 【模板】数学
- 数学模板
- 数学模板 - 组合数学
- 简单数学
- 数学模板 ctex
- 模板:(数学:高斯消元法)
- [数学] Lucas定理模板
- 数学模板 - 数论基础
- 数学模板 - 计算方法
- 数学算法模板总结
- 数学模板-素数判断
- 数学模板-逆元
- 数学模板-BSGS&&EXBSGS
- 程序员的10大谚语
- 文件系统
- ioremap_nocache函数说明
- kfifo_alloc深度解析
- linux驱动程序接口
- 简单数学模板
- linux多文件编译方法
- asp.net中验证控件的使用方法
- grep常用方法小结
- urllib2模块
- linux错误代码表
- do{}while(0)的妙用
- linux编译及启动过程分析
- Win7配置theano+cuda8+cudnn实现gpu加速及遇到问题的解决方法