基础数学
2017-05-22 17:02
113 查看
gcd–最大公约数与lcm–最小公倍数
这个式子基于这样一个事实: gcd(a,b)=gcd(b,b%a);
证明:
设:a,b(a>b),d为a,b的一个公约数,a=sd,b=td,b=aq+r;
所以: a%b=r ;a\b=q; 若r等于0,则b为a的一个约数,所以b为最大公约数
若r!=0 可以证明 b与r的最大公约数与a与b的最大公约数相等
r=(s-tq)d;如果不懂可以看这里
lcm*gcd=a*b;
筛法
素数筛:
Eratosthenes筛:
莫比乌斯函数,容斥,欧拉函数,积性函数之后再写orz……
扩展欧几里得定理:
证明
结论:(x0+kb1,y0-ka1)
void gcd(int a,int b) { return b==0?a:gcd(b,a%b); }
这个式子基于这样一个事实: gcd(a,b)=gcd(b,b%a);
证明:
设:a,b(a>b),d为a,b的一个公约数,a=sd,b=td,b=aq+r;
所以: a%b=r ;a\b=q; 若r等于0,则b为a的一个约数,所以b为最大公约数
若r!=0 可以证明 b与r的最大公约数与a与b的最大公约数相等
r=(s-tq)d;如果不懂可以看这里
lcm*gcd=a*b;
筛法
素数筛:
void Euler_Prime() { for(int i=2;i<=n;i++) { if(!vis[i]) pri[++tot]=i; for(int j=1;j<=tot;j++) { int prime=pri[j]; if(i*prime>n) break; vis[i*prime]=1; if(i%prime==0) break; } } }`
Eratosthenes筛:
int Eratosthenes_Prime(){ for(int i=2;i<=n;i++) { if(!vis[i]) { pri[++tot]=i; for(int j=1;(i*j)<=n;j++) vis[i*j]=1; } } }
莫比乌斯函数,容斥,欧拉函数,积性函数之后再写orz……
扩展欧几里得定理:
void gcd(int a,int b,int& d,int& x,int& y) { if(!b) {d=a;x=1;y=0}; else {gcd(b,a%b,d,x,y);y-=x*(a/b);} }
证明
结论:(x0+kb1,y0-ka1)
相关文章推荐
- 数学:确定性的丧失---第十一章 形式主义与集合论公理化基础
- 计算机科学与技术学习心得之计算机理论的一个核心问题--计算数学基础(转载)
- GPGPU::数学基础教程
- 中国术数学基础入门-八卦歌诀
- Direct3D游戏开发学习笔记3——D3D数学基础(初级篇)
- 图形学基础---数学知识---齐次坐标
- NLP数学基础?
- 地图的数学基础
- GPU深度发掘(一)::GPGPU数学基础教程
- 3D游戏的数学基础
- 数学基础1
- TCL基础教程——(3)数学计算
- CS需要的数学基础
- GPU深度发掘(一)::GPGPU数学基础教程
- 发现几本计算机的好书-数学基础
- 南京大学基础数学研究生的学习和生活
- 数学基础的一些经典链接
- 也谈数学基础与软件开发-追寻曾经的梦想(一)
- GPU深度发掘(一)::GPGPU数学基础教程
- flash数学基础(1)