生活随笔
收集整理的這篇文章主要介紹了
欧拉函数的求法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
歐拉函數(shù)(模板)
標(biāo)簽: includeini
2010-07-30 09:07 1333人閱讀 評論(1) 收藏 舉報分類: 模板集(陸續(xù)更新)(13)
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。[c-sharp] view plain copy
#include <iostream>
using namespace std;
#define N 100000001 int euler(int n)
{ int ans=1; int i; for(i=2;i*i<=n;i++) { if(n%i==0) { n/=i; ans*=i-1; while(n%i==0) { n/=i; ans*=i; } } } if(n>1) ans*=n-1; return ans;
}
int main()
{ int n; while(scanf("%d",&n),n) { printf("%d/n",n-1-euler(n)); } return 0;
} 下面是另外一種(篩選法)[c-sharp] view plain copy
#include <iostream>
using namespace std;
#define N 100005
#define ll __int64 ll eule[N];
int p[N][15];
int num[N]; void init()
{ int i,j; eule[1]=1; for(i=2;i<N;i++)//篩選法得到數(shù)的素因子及每個數(shù)的歐拉函數(shù)值 { if(!eule[i]) { for(j=i;j<N;j+=i) { if(!eule[j]) eule[j]=j; eule[j]=eule[j]*(i-1)/i; p[j][num[j]++]=i; } } eule[i]+=eule[i-1]; }
}
總結(jié)
以上是生活随笔為你收集整理的欧拉函数的求法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。