HDU 1286 尤拉函式

2021-06-28 02:43:46 字數 888 閱讀 8510

對於正整數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 可以推出尤拉函...