素数
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 · 220 阅读 · 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 · 211 阅读 · 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 · 128 阅读 · 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 · 81 阅读 · 0 评论