模板:数学1
来源:互联网 发布:网络餐饮 编辑:程序博客网 时间:2024/04/27 23:20
判断素数:
int isprime(int n){ if(n==2||n==3) return 1; if(n%6!=1&&n%6!=5) return 0; for(int i=5;i*i<=n;i+=6) if(n%i==0||n%(i+2)==0) return 0; return 1;}
素数打表:
const int maxn=1001005;ll p[maxn]; //第 i 个质数bool pp[maxn]; //记录是不是质数,质数为0ll get_prime(){ ll pnum=0; for(ll i=2;i<=maxn;i++){ if(!pp[i]) p[pnum++]=i; for(ll j=0;j<pnum&&p[j]*i<=maxn;j++){ pp[p[j]*i]=1; if(i%p[j]==0) break; } } pp[0]=1; pp[1]=1; return pnum;}
找素因子:
int su[maxn],cnt;void suyinzi(ll x){ cnt=0; for(int i=2;i<=sqrt(x);i++){ if(x%i==0) su[cnt++]=i; while(x%i==0) x/=i; } su[cnt++]=x;}
梅森素数:
p为素数,并且M=2^p-1也为素数,则M为梅森素数,
利用Lucas-Lehmer法判定:
ll multi(ll a, ll b, ll m){//用加法实现a * b % m的操作,防止溢出 ll ans = 0; while(b > 0){ if(b & 1) ans = (ans+a) % m; b >>= 1; a = (a<<1) % m; } return ans; } //判断是否是梅森素数 bool is_msPrime(int p){ ll r[70]; ll m = 1; m <<= p; m -=1;//求出Mp; r[1] = 4ll; //注意转化为ll if(p == 2) return true; for(int i = 2; i <= p-1; ++i) r[i] = (multi(r[i-1],r[i-1],m)-2) % m; if(r[p-1] == 0) return true; return false; } //位数为p,梅森数可以这么表示:misen=1;misen<<=p;misen--; //表示2^p
gcd:
ll gcd(a,b){ //大小无所谓,可以自动换 return b==0?a:gcd(b,a%b);}//扩展gcd,除了求出a和b的最大公约数d,还能求出x,y 使ax+by=d//别忘了需要改变的是地址值void gcd(ll a,ll b,ll &d,ll &x,ll &y){ if(!b){d=a;x=1;y=0;} else{ gcd(b,a%b,d,y,x);y-=x*(a/b);}}//乘法逆元//余数系Zn:Z15中的元素3表示:模5==3(如3,8,13,18...)//特别的如果Zn中的两个元素a,b,有ab=1,则称a b互为乘法的逆。写作 a*b % n =1ll inv(ll a,ll n){ ll d,x,y; gcd(a,n,d,x,y); return d==1? (x+n)%n:-1;}
求组合数C(n,m):
void C(ll n,ll m){ //C(n,m),m里选n个。 ll ans,a=1,b=1; for(ll i=m;i>=m-n+1;i--) a=a*i%mod; for(ll i=n;i>1;i--) b=b*i%mod; ans=a*inv(b,mod)%mod; //ans=a*get_pow(b,mod)%mod; return ans;}
汉诺塔:
void move(char A,char B){ cout<<A<<"-->"<<B<<endl; } void hanoi(int n,char A,char B,char C){ if(n==1) move(A,C); else{ hanoi(n-1,A,C,B); move(A,C); hanoi(n-1,B,A,C); } }
阅读全文
0 0
- 模板:数学1
- 数学模板
- 数学模板
- 数学模板
- 数学模板
- 【模板】数学
- 数学模板
- 数学模板 - 组合数学
- 数学模板 ctex
- 模板:(数学:高斯消元法)
- [数学] Lucas定理模板
- 数学模板 - 数论基础
- 数学模板 - 计算方法
- 简单数学模板
- 数学算法模板总结
- 数学模板-素数判断
- 数学模板-逆元
- 数学模板-BSGS&&EXBSGS
- ACM----三角形(有n根棍子,棍子i的长度为ai。)
- Kettle插入/更新
- 计算圆的面积和周长
- Rdds基本操作Transformation,逐元素,map,filter,flatMap,集合运算
- scp
- 模板:数学1
- Android 7.0 网络变化通知遇到的问题
- 筛法感悟
- for与基本的数组内容 py
- 码流
- Android全选反选
- C# WPF定时器的显示和触发
- 习题3.1(1)
- LuoguP3912 素数个数 解题报告【筛法求素数】