怕忘了……
尤拉函式 定義、證明、打表方法
尤拉定理 定義、證明
剩餘系、完系、簡系
證明相當精彩!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 #includeadvanced: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*/
學習 快速冪&龜速乘&快速乘
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 尤拉函式是積性函式,但不是完全積性函式...