題目大概是小於n的數中有多少個與n互素的數。這裡可以用尤拉公式。
φ函式的值 通式:φ(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)就是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), 證明與上述類似。
設a, b, c是跟m, n, mn互質的數的集,據中國
剩餘定理,a*b和c可建立一一對應的關係。因此φ(n)的值使用
算術基本定理便知,
若n= ∏p^(α(下標p))
p|n則φ(n)=∏(p-1)p^(α(下標p)-1)=n∏(1-1/p)
p|n p|n
例如φ(72)=φ(2^3×3^2)=(2-1)2^(3-1)×(3-1)3^(2-1)=24
與尤拉定理、
費馬小定理的關係
對任何兩個互質的正整數a, m, m>=2有
a^φ(m)≡1(mod m)
即尤拉定理
當m是質數p時,此式則為:
a^(p-1)≡1(mod m)
即費馬小定理。
#include #includeusing namespace std;
int prime(int n)//判斷素數
if(i<=k)
return 0;
else
return 1;
}int count1(int m)
{ int i,k=0,s=1,a[100],j;
if(prime(m)||(m==1))//特殊情況處理
return m-1;
for(i=2;i>n)
{for(i=0;i>m;
cout<
hdu 找新朋友
題目 problem description 新年快到了,豬頭幫協會 準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定和n有大於1的公約數,否則都是新朋友,現在會長想知道究竟有幾個新朋友?請你程式設計序幫會長計算出來。inpu...
hdu 1286 找新朋友
problem description 新年快到了,豬頭幫協會 準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定和n有大於1的公約數,否則都是新朋友,現在會長想知道究竟有幾個新朋友?請你程式設計序幫會長計算出來。input 第...
HDU 1286 找新朋友
time limit 1000ms memory limit 32768kb 64bit io format i64d i64u description 新年快到了,豬頭幫協會 準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定...