1. Primality test
primality Test O (sqrt (n))
1 intIs_prime (intN)2 {3 for(intI=2; i*i<=n;i++){4 if(n%i==0)return 0;5 }6 returnn!=1;7}
Constraint enumeration O (sqrt (n))
1vector<int> Divisor (intN) {2vector<int>Res;3 for(intI=2; i*i<=n;i++) {4 if(n%i==0) {5 Res.push_back (i);6 if(i!=n/i) Res.push_back (n/i);7 }8 }9 Ten returnRes; One}
Integer decomposition O (sqrt (n))
1map<int,int> Prime_factor (intN)2 {3map<int,int>Res;4 for(intI=2; i*i<=n;i++) {5 while(n%i==0) {6res[i]++;7N/=i;8 }9 }Ten if(n!=1) res[n]=1; One returnRes; A}
2. Filter O (NLOGLOGN)
1 intSieveintN)2 {3 intp=0;4CLR (Is_prime,0);5is_prime[0]=is_prime[1]=1;6 7 for(intI=2; i<=n;i++) {8 if(!Is_prime[i]) {9prime[++p]=i;Ten for(intj=2*i;j<=n;j+=i) is_prime[j]=1; One } A } - returnp; -}
3. Interval Sieve method
1 voidSegment_sieve (LL a,ll b)2 {3 for(intI=0;(LL) i*i<b;i++) is_prime_small[i]=true;4 for(intI=0; i<b-a;i++) is_prime[i]=true;5 6 for(intI=2;(LL) i*i<b;i++) {7 if(Is_prime_small[i]) {8 for(intj=2*i; (LL) j*j<b;j+=i) is_prime_small[j]=false;9 for(LL J=max (2LL, (a+i-1)/i) *i;j<b;j+=i) is_prime[j-a]=false;Ten } One } A -}
Prime number correlation algorithm