題意 中文 就是求小於等於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
225608
24027
sample output
768016016
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...