對於正整數n,尤拉函式是小於或等於n中與n互質的數的數量。
φ(x)來表示,如:φ(8)=4,
那麼尤拉函式的計算公式為:φ(x) = n*(1-1/p1)*(1-1/p2)*(1-1/p3)...(1-1/pn)
其中n為待求的正整數n,pi為p的質因數,注意質因數只算一次。
如18 = 2 * 3 * 3
φ(x) = 18 * (1 - 1/2) * (1 - 1/3) = 6-------------------(1)
質數可以先用線篩法打表。
程式設計實現的時候可以放心的做除法,因為從(1)式可以看出,分母都是n的因數,不會產生精度問題。只是注意當n太大的時候的溢位問題。
**如下:
//// main.cpp
// hdu1286
//// created by 汪之濤 on 15-1-7.
//#include #include #include #include using namespace std;
const int max = 32768;
int arr[max];
int prime[max];
int n,num = 0;
void calprime()}}
for(int i = 2;i < max;++i)
}int calres(int n)
return (int)res;
}int main()
{ calprime();
int cases;
scanf("%d",&cases);
while(cases--)
{scanf("%d",&n);
cout<
hdu 1286 (尤拉函式)
euler函式 那麼 12 12 1 1 2 1 1 3 4 若n是質數p的k次冪,n p k p k 1 p 1 p k 1 因為除了p的倍數外,其他數都跟n互質。尤拉函式是積性函式 若m,n互質,mn m n 特殊性質 當n為奇數時,2n n 證明於上述類似。ac include iostrea...
hdu 1286 找新朋友(尤拉函式)
一道赤裸裸的尤拉函式題!原來只知道尤拉這個人 真是頭髮短見識更短,慚愧,以後課下還是要了解一些其他方面的知識 嘿嘿 用了尤拉函式!這就是一道水題嗎 呵呵呵 附上尤拉函式的講解 在數論 對正整數 n,尤拉 函式是少於或等於n的數中與n 互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為euler ...
HDU 1286 找新朋友 尤拉函式
題意 中文 就是求小於等於n的數中有多少個和n互質 即尤拉函式值 div i 表示i的最小質因數 eul i 儲存i的尤拉函式值 求尤拉函式的方法 1.eul 1 1 2.若i p k p是素數 eul i p 1 p k 1 3.若m,n互質,eul m n eul m eul n 可以推出尤拉函...