欧拉函数

关于欧拉函数有如下几点性质:
1、phi(1) = 1
2、若n是质数,那么phi(n) = n-1
3、若n是质数x的k次幂,phi(n) = (x-1)*x^(k-1)
4、若m,n互质,那么phi(m*n) = phi(m)*phi(n)
5、若n是奇数,那么phi(2*n) = phi(n)
6、若x,y是质数,且n = x*y,那么phi(n) = (x-1)*(y-1)
6、小于n且与n互质的数的和为:n/2 * phi(n)
其中第4条性质是因为欧拉函数是积性函数,莫比乌斯函数也是一个积性函数
性质1:
写成
这里写图片描述
可推出
这里写图片描述
感觉可能也用不太到
HDU:2824
最简单的模板题
hdu2824

#include <cstdio>  
#include <cstring>  

const int MAXN = 3e6+5;  
__int64 phi[MAXN];  

void PhiTable(int n)  
{  
    for(int i=2; i<=n; ++i)  
        phi[i] = 0;  
    phi[1] = 1;  
    for(int i=2; i<=n; ++i) if((!phi[i]))  
        for(int j=i; j<=n; j+=i)  
        {  
            if(!phi[j]) phi[j] = j;  
            phi[j] = phi[j]/i * (i-1);  
        }  
}  

int main()  
{  
    int a, b;  
    PhiTable(3e6);  
    while(~scanf("%d%d", &a, &b))  
    {  
        __int64 ans = 0;  
        for(int i=a; i<=b; ++i)  // 累加答案  
           ans += phi[i];  
        printf("%I64d\n", ans);  
    }  
    return 0;  
}  

hdu2588
欧拉函数积性函数
hdu2837
欧拉函数快速幂
欧拉函数
欧拉函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值