尤拉函式(例題)

2022-07-30 02:45:15 字數 1446 閱讀 6538

φ//如果不熟悉尤拉函式可轉超連結<--

正題:

1.儀仗隊:

求從(0,0)點可以看到的點,我們考慮正比例函式的斜率,同一斜率上只能看到乙個點,我們要知道對於斜率0~1在乙個n*n的點陣中有多少可能的斜率使得有若干點在函式上。

觀察規律:

1*1:顯然答案為0(自己看到自己當然不算了)

2*2:有斜率0,1/2(當然0是重的,一下重複的就不再考慮了),所以多了一種,答案為1

3*3:多了1/3,2/3,答案為3

4*4:多了1/4,2/4,3/4;2/4重了,所以答案為5

5*5:多了1/5,2/5,3/5,4/5,答案為9

n*n:多了1/n,2/n,3/n,4/n,......,(n-1)/n中不重複的,不重複就是說分數要最簡。

那就成了求1~n中所有數i中1~i-1中與i互質的數的個數只和,即為尤拉函式。

求出和來之後最終答案應該為2*ans+1(我們算過了y=x的下半邊三角形的情況,還有上半邊呢?)

#include#include#includeusing namespace std;

bool b[100010];

int n,prime[100010],total,phi[100010],ans;

int main()

for(int j=1;j<=total;j++)

else

phi[i*prime[j]]=phi[i]*(prime[j]-1);}}

for(int i=1;i<=n-1;i++)ans+=phi[i];

printf("%d",ans*2+1);

}

2.farey sequence:

題目描述:對於任意整數n>1,存在分數集合序列f,fi=a/b,其中0n的項數。

解:我們看這個集合的實質,集合不能有重複元素,所以分數必須是最簡,那就是說對b∈[1,n],a∈[1,b-1]中滿足(a,b)互質的對數。

即求φ(1)+φ(2)+φ(3)+...+φ(n),由於資料有多組,我們考慮預處理,用字首和記錄對任意n的答案。

#include#include#includeusing namespace std;

bool b[100010];

int n,prime[100010],total,phi[100010],ans[100010];

int main()

for(int j=1;j<=total;j++)

else

phi[i*prime[j]]=phi[i]*(prime[j]-1);}}

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

ans[i]=ans[i-1]+phi[i];

int t;

scanf("%d",&t);

for(int i=1;i<=t;i++)

}

尤拉函式,尤拉定理例題整理

11.20 update 有公式a x a x phi c phi c mod c 證明見ac神牛部落格 例題 fzu 1759 尤拉函式定義 小於n且與n互素的數的個數 尤拉函式為積性函式,滿足積性函式的性質,即可以通過n的素因子的函式值求得n的尤拉函式值 求值方式有兩種,單個判斷和打表 如下 i...

尤拉函式 尤拉定理

尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...

尤拉函式 尤拉定理

尤拉函式 設 n 為正整數,則 1,2,n 中與 n 互素的整數的個數計作 n 叫做尤拉函式。設 p 是素數,p p 1設 p 是素數,pa pa p a 1 設 p,q 是不同的素數,n q p,n p q 即 n p 1 q 1 設 m,n 是兩個正整數,且 m,n 1,若 n m n,n m ...