【数论】【素数】素数相关基础——欧拉函数与欧拉定理

来源:互联网 发布:labview编程样式 pdf 编辑:程序博客网 时间:2024/05/22 05:04

欧拉定理与欧拉函数在数论方面的应用十分广泛,几乎所有的形如a^n % k = 1的东西都可以往上靠。

这里暂时不细说怎么用,先讲基础内容。


1、 欧拉函数  

欧拉函数 φ(n)表示不超过n且与n互素的正整数的个数 。

计算公式为: φ(n)=n*(1-1/p1)*(1-1/p2)*…其中p1,p2…为n的质因数


2、欧拉定理

若a,n是正整数,且a,n互质,则有a^ φ(n) mod n =1。

实际上这是费马小定理的一个推广。

我们看费马小定理:a^(p-1) % p =1,而对于欧拉函数φ(n),当n为素数时,根据其实际意义,显然φ(n)=n-1,带入欧拉定理的式子,其实就得到了飞马小定理。


3、欧拉函数打表

在实际运用中,用朴素方法去一次次求欧拉函数的值是很慢的,所以我们可以采用打表的方法来提高效率。

欧拉函数的打表利用了类似于筛选法打表的思路:枚举i,如果i是一个质数,那么把i的整倍数都乘上(1-1/i),注意实际操作中我们应该是/i*(i-1)。


for (int i=1;i<=100000;i++){        euler[i]=i;}    for (int i=1;i<=100000;i++){        if (prime[i]==0){            for (int j=i;j<=100000;j+=i){                euler[j]=euler[j]/i*(i-1);            }        }}

prime数组就是我们之前用筛选法打出来的素数表。

0 0