尤拉定理 尤拉函式 a b c

2022-09-17 07:30:16 字數 1875 閱讀 5295

怕忘了……

尤拉函式 定義、證明、打表方法

尤拉定理 定義、證明

剩餘系、完系、簡系

證明相當精彩!ai

∗b+b

j∗a'>

而1~a*b中關於a*b的每個系有且僅有乙個。

勿忘:積性函式指對於所有互質的整數a和b有性質f(ab)=f(a)f(b)的數論函式。

a^b%c

在b非常大時的情況,

[前提 (a,c)=1]

因為a^phi(c)%c = 1

a^b%c=a^(b%phi(c))%c

c為素數時,phi(c)=c-1。

[無前提]

b>=phi(c)時,a^b%c=a^(b%phi(c)+phi(c))%c

b證明:

例子:a=d c=d^e b=d^f e>f

如a=2 b=1024 c=2

p5091 【模板】尤拉定理

1 #include 2 #include 3 #include 4 #include 5 #include 

6 #include 7 #include 8

using

namespace

std;

9#define ll long long

1011

const

double eps=1e-8;12

const ll inf=1e9;

13const ll mod=1e9+7;14

const

int maxn=1e6+10;15

//const int maxlen=2e7+10;

1617

intphi[maxn],zhi[maxn],cnt_zhi;

18bool

vis[maxn];

19int maxv=1e6;

20//

char str[maxn];

2122

ll mul(ll a,ll b,ll m)

2332

return

y;33}34

35int

main()

3651

for (j=1;j<=cnt_zhi;j++)

5262

else

63 phi[k]=phi[i]*(zhi[j]-1

);64}65

}666768 scanf("

%d%d

",&a,&m);

69 b=0;70

while ((c=getchar())!=eof)

7181

82if

(use)

83 printf("

%lld

",mul(a,b+phi[m],m));

84else

85 printf("

%lld

",mul(a,b,m));

86return0;

87}88/*

892 12 8

902 5 3

91*/

advanced:

學習 快速冪&龜速乘&快速乘

a/b%c

b,c互質

則a/b 與 a^[phi(c)-1] 模c的結果是一致的 [a^phi(c) mod c = 1]

a/b%c=a^[phi(c)-1]%c

對於任意情況:

針對的a是特別大,b、c較小的情況

a/b%c=(a%bc)/b

證明:把a設為bc*x + b*y +z的形式 (x盡量大,然後是y盡量大,x,y,z>=0)

最後推薦:

一些數論題目的模板

尤拉函式 尤拉定理

尤拉函式 對正整數 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 ...

尤拉函式 尤拉定理

尤拉函式在oi中是個非常重要的東西,不知道的話會吃大虧的.尤拉函式用希臘字母 表示,n 表示n的尤拉函式.對 n 的值,我們可以通俗地理解為小於n且與n互質的數的個數 包含1 尤拉函式的一些性質 1.對於素數p,p p 1,對於對兩個素數p,q pq pq 1 尤拉函式是積性函式,但不是完全積性函式...