高效求素数(质数)即素数判定
2016-05-04 14:38
375 查看
暴力 代码 就不粘了~~
1、
//Eratosthenes筛法 //时间复杂度 O(n)~O(nlogn) #include<cstdio> #include<cstring> #include<cmath> #include<iostream> using namespace std; const int N=1e8+10; int n; bool check ; int main(){ n=1e5+50; //scanf("%d",&n); //memset(check,0,sizeof check); int m=sqrt(n+0.5); for(int i=2;i<=m;i++){ if(!check[i]){ for(int j=i*i;j<=n;j+=i){ check[j]=1; } } } for(int i=2;i<=n;i++){ if(!check[i]){ printf("%d ",i); } } return 0; }
2、
//欧式筛法 //时间复杂度 O(n) #include<cstdio> #include<cstring> #include<iostream> using namespace std; const int N=1e8+10; int n,tot; int prime[N/3]; bool check ; int main(){ n=1e7+50; //scanf("%d",&n); //memset(check,0,sizeof check); for(int i=2;i<=n;i++){ if(!check[i]) prime[++tot]=i; for(int j=1;j<=tot&&prime[j]*i<=n;j++){ check[i*prime[j]]=1; if(i%prime[j]==0) break; } } for(int i=1;i<=tot;i++){ printf("%d ",prime[i]); } return 0; }
3.费马小定理
//单独测一个较大的素数时,O(1)(常数级别的) #include<cstdio> #include<cstdlib> #include<ctime> #include<algorithm> #define ll long long using namespace std; ll mod; ll mul(ll a,ll b){/*慢速乘法*/ ll res=0; for(;a;a>>=1,b=(b+b)%mod) if(a&1) res=(res+b)%mod; return res; } ll fpow(ll a,ll p){/*快速幂 */ ll res=1; for(;p;p>>=1,a=mul(a,a)%mod) if(p&1) res=mul(res,a)%mod; return res; } bool check(ll n){ if(n==2) return 1; if((n<2)||!(n&1)) return 0; mod=n; for(ll i=0,x;i<10;i++){/*费马定理+验证法*/ x=rand(); if(x%n==0) continue; if(fpow(x,n-1)!=1) return 0; } return 1; } int main(){ srand(time(0)); ll x;scanf("%lld",&x); if(check(x)) puts("Yes"); else puts("No"); return 0; }
相关文章推荐
- line ending对AWK print的影响
- Fragment和Activity之间的数据传递(两种:Acitvity-->Fragment;Fragment---->Activity)
- 微信支付开发-从零开始-Part1
- Centos 6.5 - Red Hat 6.5 时区更改
- ruby on rails ,extjs框架下的ajax使用
- 整理iOS9适配中出现的坑(图文)
- 构建之法阅读笔记04
- 上传excel中的内容到服务器
- 数据库死锁及oracle死锁介绍
- JSP分页技术(jsp+servlet)
- Android加载器加载本地图片
- Struts2中redirect基本的经验之谈
- OC 的那点事儿
- 最短路径问题 HDU 3790
- kvm 虚拟化 virt-install 安装虚拟机
- 在mac系统下用eclipse未正常关闭tomcat导致进程被占用
- nyoj744
- vmlinux,vmlinuz,bzimage,zimage,initrd.img的区别与联系
- iOS开发 ☞ 各种CG结构体
- 好用工具