欧拉函数、费马定理、欧拉定理

一、欧拉函数

思考:任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?

解:计算这个值的方法就叫做欧拉函数,以φ(n)表示。


怎样求一个任意数的欧拉函数值?



其中(3)为欧拉函数的通用计算形式。

实现代码:

long phi(long n)
{
    long ans=n;
    for (long i=2; i*i<=n; i++) //寻找素数pi(任意一个正整数可以分解成唯一的质因数的乘积,所以从小到大的找,则符合条件的一定是素数)
    {
        if(n%i==0) //n能被i整除
        {
            n/=i;
            ans=ans-ans/i;//ans=ans*(1-1/i)
            while (n%i==0) //找出素数pi对应的指数是多少
            {
                n/=i;
            }
        }
    }
    if(n>1)
    {
        ans=ans-ans/n;
    }
    return ans;
}

可以用 poj2407来测试代码。


二、费马定理

如果p是素数并且a是不能被p整除的正整数,那么:


费马定理的另一种形式:

 如果p是素数,a任意正整数,则对gcd(a,p)=1,有:



证明:

因为p是素数,所以a、p互素,所以集合{a,2a,3a,…,(p-1)a}在同余意义下等价于{1,2,3,…,(p-1)}(注:元素顺序可能不同)
所以a×2a×3a×…×(p-1)a≡1×2×3×…×(p-1) mod p,即(p-1)!a^(p-1)≡(p-1)!mod p,所以a^(p-1)≡1mod p,也即ap≡a mod p。

来看道例题:



三、欧拉定理

若整数a与整数n互素,则:


类似费马定理,欧拉定理的另一种表述也很有用( a和n不一定互素):


如果n=p是素数,则有


显然,欧拉定理可以看成是费马定理的推广形式。


下面来看看一道例题:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值