快速幂:(有mode取模版)
long long int mode(long long int a,long long int b, long long int mode)
{
long long int sum=1;
while(b){
if(b&1)
{
sum=(sum*a)%mode;
b--;
}
b/=2;
a=a*a%mod;
}
return sum;
}
1.1素数常规做法:
bool isprime(int n)
{
for(int i=2;i<n;i++)
{
if(n%i==0)
return false;
}
return true;
}
1.2sqrt(取平方根节约时间)10的12次方可以试着用;
bool isprime(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return false;
}
return true;
}
2.1六素数法:
bool isprime(int n)
{
if(n==1)
return false;
if(n==2||n==3)
return true;
if(n%6!=1&&n%6!=5)
return false;
int k=sqrt(n)+1;
for(int i=5;i<k;i+=6)
{
if(n%i==0||n%(i+2)==0)
return false;
}
return true;
}
3.1素数筛:
for(int i=2;i<=n;i+=)
if(prime[i]==0)
{
p[++tot]=i;
for(int j=2;j*i<=n;j++)
prime[j*i]=1;
}
3.2欧拉筛
for(int i=2;i<=n;i++)
{
if(prime[i]==0)
p[++tot]=i;
for(int j=1;j<=tot&&i*p[j]<=n;j++)
{
prime[i*p[j]]=1;
if(i%p[j]==0)break;
}
}
这是从一名大佬分享的自料上感觉好的模板整出来。
自料链接:
(https://blog.csdn.net/Gold_Medal/article/details/107732553)
添加链接描述