
素数
Are_you_ready
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最大公约数--acwing(求n范围内gcd(x,y)=p的个数&&p为质数)
题目:https://www.acwing.com/problem/content/222/ 给定整数N,求1<=x,y<=N且GCD(x,y)为素数的数对(x,y)有多少对。 GCD(x,y)即求x,y的最大公约数。 输入一个整数N 输出一个整数,表示满足条件的数对数量。 1≤N≤1e7 输入样例: 4 输出样例: 4 题解: 求gcd(x,y)=p,p是质数,那么就是求gcd(x/p,y/p)=1, 即1<=xx,yy<=n/p里面互质对儿个数,所以枚举n范围内的所以p,然后求出原创 2020-12-31 11:04:01 · 305 阅读 · 0 评论 -
线性求欧拉函数(1-n的每个)
欧拉筛加一个数组再加点东西。 求出1-n的每一个欧拉函数 const int N=1e5+10; int prime[N+10],vis[N+10]; int cnt; int phi[N]; void init(int n) { cnt=0; vis[0]=vis[1]=1; phi[1]=1; for(int i=2; i<=n; i++) { if(vis[i]==0) { prime[cnt++]=原创 2020-12-30 19:20:45 · 246 阅读 · 0 评论 -
求单个欧拉函数
求[1,n]中与n互质的数 模板如下 int Euler(int n) { int ret=n,i; for(i=2;i*i<=n;i++) //如果i*i可能会超出int,那么就用sqrt(n) if(n%i==0) { ret=ret/i*(i-1);//先除以i,防止超出int,造成错误 while(n%i==0) n/=i; } if(n>1) ret=ret/原创 2020-08-10 11:58:22 · 170 阅读 · 0 评论 -
2020-08-10
埃式筛法(埃拉托斯特尼筛法) const int Max=1e7+7; const int Max1=1e6+7; bool v[Max]; int prime[Max1]; int k; void prim() { k=0; memset(v,0,sizeof(v)); v[0]=v[1]=1; for(int i=2; i<=Max; i++) { if(!v[i]) //如果它不是1,说明它是素数 {原创 2020-08-10 10:56:01 · 105 阅读 · 0 评论