欧拉函数

在数论,对正整数n,欧拉函数是小于n的正整数与n互质数的数目(f(1)=1),例如f(8)=4,因为1,3,5,7均和8互质
(再提一下互质,互质就是两个数字的公约数只有1,叫做互为质整数。)

公式:

1 φ(1)=1 (和 1 互质 的数(小于等于1)就是1本身)。
2)注意:每种质因数只一个。 比如12=2*2*3那么φ12=12*1-1/2*(1-1/3)=4
3)若n是质数pk次幂   ,因为除了p的倍数外,其他数都跟n互质

4欧拉函数是积性函数——m,n互质,
5 特殊性质:当n为奇数时, n为质数则

6 证明:
A, B, C 是跟 m, n, mn 互质的数的集,据中国 剩余定理 A*B C 可建立一一对应的关系。因此 φ(n) 的值使用 算术基本定理 便知,

例如

与欧拉定理、费马小定理的关系对任何两个互质的正整数a, m(m>=2)即欧拉定理m是质数p时,此式则为:

/*
特性 :
1.若a为质数,phi[a]=a-1;
2.若a为质数,a mod b=0,phi[a*b]=phi[b]*a
3.若a,b互质,phi[a*b]=phi[a]*phi[b](当a为质数时,if b mod !=0 ,phi[a*b]=phi[a]*phi[b])
*/
int m[n],phi[n],p[n],nump;
//m[i]标记i是否为素数,0为素数,1不为素数;p是存放素数的数组;nump是当前素数个数;phi[i]为欧拉函数
int make()
{
        phi[1]=1;
    for (int i=2;i<=n;i++)
    {
        if (!m[i])//i为素数
        {
            p[++nump]=i;//将i加入素数数组p中
            phi[i]=i-1;//因为i是素数,由特性得知    
        }    
        for (int j=1;j<=nump&&p[j]*i<n;j++)  //用当前已的到的素数数组p筛,筛去p[j]*i
        {
            m[p[j]*i]=1;//可以确定i*p[j]不是素数 
            if (i%p[j]==0) //看p[j]是否是i的约数,因为素数p[j],等于判断i和p[j]是否互质 
            {
                phi[p[j]*i]=phi[i]*p[j]; //特性2
                break;
            }
            else phi[p[j]*i]=phi[i]*(p[j]-1); //互质,特性3其,p[j]-1就是phi[p[j]]   
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值