基本欧拉函数
证明:欧拉函数的证明暂时还不会,等会了再写吧,概念就是:n的欧拉函数是指不超过n的与n互质的数有多少个。比如与8互质的数为:1、3、5、7,所以8的欧拉函数值为4.
求法:假设要求n的欧拉函数f(n)=n*(1-1/p1)*(1-1/p2)*...*(1-1/pm),其中p1,p2,...pm为小于等于n的n的质因子,比如10的质因子为2,5,所以f(10)=10*(1-1/2)*(1-1/5)=4.
代码实现:
#include<stdio.h> #include<string.h> #include<math.h> int a[1000001],prime[1000001]; int main() { int i,j; memset(prime,0,sizeof(prime)); prime[0]=prime[1]=-1; for(i=1;i<=1000000;i++) a[i]=i; for(i=2;i<=1000000;i++) { if(prime[i]==0) { for(j=i;j<=1000000;j=j+i) { a[j]=a[j]/i*(i-1); prime[j]=-1; } } } for(i=1;i<=10;i++) printf("%d ",a[i]); printf("\n"); return 0; }
posted on 2013-05-26 23:40 后端bug开发工程师 阅读(808) 评论(2) 编辑 收藏 举报