筛法和欧拉函数
2016-07-24 10:27
281 查看
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
using namespace std;
#define M 100010
bool visit[M];
int p[M];
void iii()
{
memset(visit,true,sizeof(visit));
visit[1]=0;
for(int i=2; i<M; ++i)//如果M*M>int的话类型改为long long
{
if(visit[i]==true)
{
p[np++]=i;
for(int j=i*i; j<M; j+=i)
{
visit[j]=false;
}
}
}
}
//v[i]==1 是素数
//线性筛法
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
using namespace std;
#define M 100010
bool visit[M];
int p[M];
void iii()
{
memset(visit,true,sizeof(visit));
visit[1]=0;
for(int i=2; i<M; ++i)//如果M*M>int的话类型改为long long
{
if(visit[i]==true)
{
p[np++]=i;
for(int j=i*i; j<M; j+=i)
{
visit[j]=false;
}
}
}
}
//v[i]==1 是素数
//线性筛法
欧拉函数打表 const int MAX=3000001; long long e[MAX]; void geta() { e[1]=0; for(int i=2;i<MAX;++i) e[i]=i; for(int i=2;i<MAX;++i) if(e[i]==i) for(int j=i;j<MAX;j+=i) e[j]=e[j]/i*(i-1); for(int i=2;i<MAX;++i)//去掉这句话,e[i]表示i的欧拉值 e[i]+=e[i-1]; } //e[i]表示从1到i每个数欧拉值的总和 int euler(int n)//返回一个数的欧拉值 { int res=n,a=n; for(int i=2; i*i<=a; i++) { if(a%i==0) { res=res/i*(i-1); while(a%i==0) a/=i; } } if(a>1) res=res/a*(a-1); return res; }
#include<iostream>//区间筛法 #include<cstdio> #include<cmath> #include<cstring> #include<queue> using namespace std; #define M 65538 #define LL long long const int maxn=1000001;//区间长度最大值 bool visit[M]; bool is[maxn]; int ans[maxn]; LL p[M]; int cnt=0; void iii()//找2~sqrt(INF)的素数,65537是素数且大于sqrt(2^31-1); { memset(visit,true,sizeof(visit)); visit[1]=0; for(long long i=2; i<M; ++i) { if(visit[i]==true) { p[cnt++]=i; for(long long j=i*i; j<M; j+=i) { visit[j]=false; } } } } //区间筛法,找到大于等于n,小于等于m的素数 for(int i=0; i<maxn; i++) is[i]=1; int d=sqrt(m+0.5); for (LL i = 0; i < cnt && p[i]<= d; i++) { int s = n/ p[i] + (n% p[i] > 0); if (s == 1) s = 2; for (LL j = s; j*p[i] <= m; j++) if (j*p[i] >= n) is[j*p[i]-n] = 0; }
相关文章推荐
- Android自定义圆形图片控件CircleImageView
- java实现文字版P图
- validate插件使用remote做数据唯一性校验
- Backbone+React使用
- DirectX11 SDK下载地址
- NYOJ 117 求逆序数 (树状数组 + 离散化思路)
- HDU 5748 (Bellovin LIS)
- tomcat点击startup.bat一闪而过
- 实战3:CentOS 7,编译安装amp(php-fpm) + xcache(分别单独部署)
- 初进京城——有点懵
- [置顶] Android 6.0特性
- 码神作业(九九乘法表)
- SCPPO(十):网站发布中的问题锦集—手动发布网站
- SG函数
- 结合开发文档分析volley(二)
- Power of Three
- 实战2:Centos 7上单台主机分别部署amp+xcache(php使用FastCGI机制)rpm方式
- c++中vector的用法详解
- 16.4 使用主窗口
- 实战1:CentOS 7 lapm+xcache(使用 rpm包部署, php使用module方式)