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

2021-06-17 21:07:58 字數 1028 閱讀 8916

一道赤裸裸的尤拉函式題!原來只知道尤拉這個人(真是頭髮短見識更短,慚愧,以後課下還是要了解一些其他方面的知識)

嘿嘿····

用了尤拉函式!這就是一道水題嗎 !呵呵呵························

附上尤拉函式的講解:在數論

,對正整數

n,尤拉

函式是少於或等於n的數中與n

互質的數的數目。

此函式以其首名研究者尤拉命名,它又稱為euler's totient function、

φ函式、尤拉

商數等。

例如φ(8)=4,因為1,3,5,7均和8互質。

φ函式的值  通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),

其中p1, p2……pn為x的所有質因數,x是不為0的整數。φ(1)=1(唯一和1

互質的數就是1本身)。 

(注意:每種質因數只乙個。比如12=2*2*3那麼

φ(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互質。

設n為正整數,以 φ(n)表示不超過n且與n互

質的正整數的個數,稱為n的尤拉函式值,這裡函式

φ:n→n,n→φ(n)稱為尤拉函式。

尤拉函式是

積性函式

——若m,n互質,φ(mn)=φ(m)φ(n)。

特殊性質:當n為奇數時,φ(2n)=φ(n), 證明與上述類似。

#include

#include

#include

int isprime(int n)

int main()

}scanf("%d",&t);

while(t--)

}//printf("\n");

printf("%d\n",sum);

}return 0;

}

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 可以推出尤拉函...

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...