HDU 1286 找新朋友 尤拉函式

2021-06-26 22:30:46 字數 995 閱讀 9836

題意  中文  就是求小於等於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];

可以推出尤拉函式的遞推式 若

(i/div[i])%div[i]==0 則 eul[i]=eul[i/div[i]]*div[i]

否則eul[i]=eul[i/div[i]]*(div[i] -1)

#include#includeusing namespace std;

const int n = 33000;

int div[n], eul[n];

void geneuller()

eul[1] = 1;

for(int i = 2; i < n; ++i)

}int main()

return 0;

}

problem description

新年快到了,「豬頭幫協會」準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定和n有大於1的公約數,否則都是新朋友,現在會長想知道究竟有幾個新朋友?請你程式設計序幫會長計算出來。

input

第一行是測試資料的組數cn(case number,1

output

對於每乙個n,輸出一行新朋友的人數,這樣共有cn行輸出。

sample input

2

25608

24027

sample output

7680

16016

hdu 1286 找新朋友(尤拉函式)

一道赤裸裸的尤拉函式題!原來只知道尤拉這個人 真是頭髮短見識更短,慚愧,以後課下還是要了解一些其他方面的知識 嘿嘿 用了尤拉函式!這就是一道水題嗎 呵呵呵 附上尤拉函式的講解 在數論 對正整數 n,尤拉 函式是少於或等於n的數中與n 互質的數的數目。此函式以其首名研究者尤拉命名,它又稱為euler ...

HDU 1286 找新朋友(尤拉函式)

思路 尤拉函式的簡單應用,建議先看本部落格演算法精講裡面關於尤拉函式的介紹 ac 1 include include using namespace std int main printf d n rea return 0 錯誤 include include using namespace std...

HDU1286 找新朋友 尤拉函式

新年快到了,豬頭幫協會 準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定和n有大於1的公約數,否則都是新朋友,現在會長想知道究竟有幾個新朋友?請你程式設計序幫會長計算出來。第一行是測試資料的組數cn case number,1...