标签:turn else pre set sizeof ++ class return void
歐拉函數篩法
歐拉函數:phi(i)為1到i之間與i互質的數的個數
1 int prime[N],phi[N],isprime[N]; 2 void getpri() 3 { 4 int cnt=0; 5 phi[1]=1; 6 memset(isprime,0,sizeof(isprime)); 7 for(int i=2;i<N;++i) 8 { 9 if(!isprime[i]) 10 { 11 prime[cnt++]=i; 12 isprime[i]=i;//質數條件isprime[i]==i 13 phi[i]=i-1;//質數的phi=i-1 14 } 15 for(int j=0;j<cnt&&i*prime[j]<N;++j) 16 { 17 isprime[i*prime[j]]=prime[j]; 18 if(prime[j]>=isprime[i])//保證只有i的最小質因數的把i篩掉 19 { 20 phi[i*prime[j]]=phi[i]*prime[j];//i與prime[j]不互質時 21 break; 22 } 23 else 24 phi[i*prime[j]]=phi[i]*(prime[j]-1);//i與prime[j]互質時 25 } 26 } 27 }
擴展歐幾里得
1 ll exgcd(ll a,ll b,ll &x,ll &y) 2 { 3 if(b==0) 4 { 5 x=1; 6 y=0; 7 return a; 8 } 9 else 10 { 11 ll ret=exgcd(b,a%b,y,x); 12 y-=a/b*x; 13 return ret; 14 } 15 }
标签:turn else pre set sizeof ++ class return void
原文地址:https://www.cnblogs.com/Lin88/p/9902177.html