线性筛与欧拉函数

φ(m)

				表示不大于m中与m互素的数的个数
				显然 φ(p)=p-1	。

积性函数

f(x)有性质:对任意互质整数m和n ,有f(mn

)=f(m)*f(n)

(完全积性函数:对于任意整数都有上式成立)
在这里插入图片描述

❤φ(m)是一个积性函数!!

线性筛求欧拉函数

通过这个性质我们得到了欧拉函数的求解方法:

int getphi(int n){
	int m=sqrt(n+0.5);
	int ans=n;	
	for (int i=2;i<=m;i++){
		if (n%i ==0 ){
			ans=ans/i*(i-1);
			while (n%i == 0) n/=i;
		}
	}
	if (n>1) ans=ans*n*(n-1);
	return ans;
}

以及线性求1~n欧拉函数值

int tot=0;
int phi[maxn],prime[maxn];
bool isPrime[maxn];
void getphi(){
    mem(isPrime,true);//宏
    phi[1]=1;
    for(int i=2;i<=maxn;i++){
        if(isPrime[i]) prime[++tot]=i,phi[i]=i-1;//*
        for(int j=1;j<=tot;j++){
            if(i*prime[j]>maxn) break;
            isPrime[i*prime[j]]=false;
            if(i%prime[j]==0){
            //如果pt不是在ipt中第一次出现的话(也就是pt整除i)
                phi[i*prime[j]]=phi[i]*prime[j];
                break;

            }else 
            	  //如果pt是在ipt中第一次出现的话(也就是pt不整除i)
            	phi[i*prime[j]]=phi[i]*(prime[j]-1);
          
        }
    }
}


在这里插入图片描述
费马小定理:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值