(1)什么是欧拉函数?一个数n的欧拉函数一个数f(n),表示[1,n-1]中与n互质的数的个数。比如f(2)=1,f(3)=2,f(4)=2。
(2)怎么求一个数n的欧拉函数?设p1,p2……pk是n的k个质因数,f(n)=n*(1-1/p1)*……(1-1/pk)。比如n=12,则p1=2,p2=3,那么f(12)=12*(1-1/2)*(1-1/3)=4。
(3)若k,m互质,则有:k^f(n)%n=1。如k=2,n=7,f(7)=6,2^6%7=1。
//求n的欧拉函数int Euler(int n){ int i,ans=n; for(i=2;i*i<=n;i++) if(n%i==0) { ans=ans/i*(i-1); while(n%i==0) n/=i; } if(n>1) ans=ans/n*(n-1); return ans;}//求1到MAX的所有数的欧拉函数const int MAX=5000005;i64 f[MAX];void init(){ int i,j; f[1]=1; for(i=2;i