ACM周末总结—10月22日
来源:互联网 发布:高速铣编程用什么软件 编辑:程序博客网 时间:2024/06/01 20:51
这个半周继续学习了数学的内容,在整理一下吧。其实感觉直接复习高代好像也可以。
筛素数:
理论:任何一个正整数都可以被唯一的分解为若干个素数的乘积;
取出容器中最小的数(此数一定是素数),删去所有该数的倍数。
int n;
bool vis[1005];
cin>>n;
memset(vis,true,sizeof(vis));
vis[0]=false;vis[1]=false;
for(int i=2;i<=n;i++){
if(vis[i]==false) continue;
for(int j=i*2;j<=n;j+=i){
vis[j]=false;
}
}
筛素数改进:
因为普通筛素数方法速度是比较慢,因为同一个数可能处理好几次(2,3,都是12的因子),任何一个数都有一 个可以被整除的最小素数(除去1),当遇到该素数是时就结束更新。
int flag=0,n;
memset(isprim,0,sizeof(isprim));
cin>>n;
for(int i=2;i<n;i++)
{
if(!isprim[i]) prim[flag++]=i;
for(int j=0;(j<flag)&&(i*prim[j]<n);j++)
{
isprim[j]=1;
if(i%prim[j]==0) break;//就用这部来节省时间
}
}
欧拉函数:
计算比x(正整数)小的正整数中有多少与x互素的数的个数。设x=p1^(a1) *p2^(a2) *......px^(ax);
f(x)=p1^(a1-1) *p2^(a2-1) .....(p1-1)(p2-1)....
欧拉定理:
设f(x)是求x的欧拉函数。如果a,m互素。
那么 a ^ ( f(m) ) == 1( mod m);//数学真是很神奇。
费马小定理:
若p为素数,则对于任意小于p的正整数a,有a^(p-1)==1( mod p )。其实就是对欧拉定理的特例,a与m互素。
二次探测定理:
若p是素数a^2==1 ( mod p); 还是欧拉定理的特例。
Miller—Rabin算法:
主要用来判断输入的数是否为素数。
如果p是素数,x是小于p的正整数,且 (x^p-1) mod p = 1。
其实这只是一个充分条件,但是可以利用随机数多试验几次,就可以把正确率提高高99.99%以上。
http://blog.csdn.net/z690933166/article/details/9860937这是一位大佬的详细讲解。
关于这个算法的具体实现我还没完全看懂。
此处是该算法的模版 http://blog.csdn.net/idealism_xxm/article/details/480531
还有用于大整数分解的Pollard—rho算法,这是某大佬的模版http://blog.csdn.net/lianai911/article/details/45076837
其实我Pollard—rho算法和Miller—Rabin算法都还没怎么彻底弄懂,彻底弄懂后专门整理一篇。
- ACM周末总结—10月22日
- ACM周末总结—9月10日
- ACM训练周末总结—10月8日
- ACM训练周末总结—10月15日
- ACM训练周末总结—10月29日
- ACM训练周末总结—9月3日
- ACM周末总结—9月17日
- ACM周末总结—9月24日
- ACM训练周末总结—11月5日
- ACM训练周末总结—11月12日
- ACM训练周末总结—11月19日
- ACM训练周末总结—11月26日
- ACM训练周末总结—12月3日
- ACM-9月10日周末训练心得
- ACM-10月1日周日周末训练心得
- ACM-10月8日周日周末训练日记
- ACM-10月15日周日周末训练心得
- ACM-12月10日周日周末训练心得
- DHCP协议
- 《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果(速度可实时)
- #define用法
- 购物车的简单实现
- 小迪教程第十二天——编辑器漏洞
- ACM周末总结—10月22日
- mysql组合查询(union和union all)
- 第四章 实现应用程序的功能
- threading模块
- 严蔚敏版数据结构课本代码——算法2.2
- 线性滤波和非线性滤波
- 从机器语言角度理解值传递和地址传递
- 菜鸟先飞之JAVA_网络编程
- 频繁项集与关联规则(英文版)