同余取模。。

来源:互联网 发布:淘宝代销合同 编辑:程序博客网 时间:2024/04/19 05:39

同模取余

基本性质

ab(modn);
a+kb=n;
n|ab;

ab(modn);d|n;
ab(modd);

ab(modn);d|(a,b,n)
adbd(modnd);

ab(modn);
(c,n)=1;
acbc(modn);

a1b1(modn);a2b2(modn);
a1+a2b1+b2(modn);
a1a2b1b2(modn);

ab(modp); ab(modq);(p,q)
ab(modpq);

费马小定理

ap11(modp);(p,(a,p)=1);

证明

P={1,2,3,,p1};
(a,p)=1;
A={a,2a,3a,,(p1)a};
(p1)a2a3a(p1)a(modp);
(p1)ap1(p1)(modp);
((p1),p)=1;
ap11(modp);

除法逆元

ababp2(modp);(p,(b,p)=1);
Bb1(modp);
ap11(modp),(p,(a,p)=1);
B=bp2;

威尔逊定理

(p1)1(modp),(p);

证明

p=2; 显然成立;

p>2;
对于所有的整数1a(p1),存在1a1(p1),使
得:
aa11(modp);
a=a1;
a21(modp);
a=1a=p1;
即:

12(p2)(p1)1(p1)aaa11(p1)1(modp);

欧拉函数

m是一个正整数,1,2,m1,m中与m互素的个数,记做φ(m); 1与任何数互素;

φ(p)=p1;(p);
m=pα,φ(m)=pαpα1;
φ(m)=mp|m(11p);

性质

φ(pq)=φ(p)φ(q);((p,q)=1)
φ(2q)=φ(q);(q);
小于n与n互素的正整数的和:  
sum=nφ(n)2;

直接求欧拉值\打标
int get_Euler(int n)   //直接求值 euler(n) = n * (1 - 1/p1) * (1 - 1/p2)*...*;{    int tmp = n, ans = n;    for (int i = 2; i * i <= tmp; i++)    {        if (tmp % i == 0)        {            ans = ans / i * (i - 1);            while (tmp % i == 0)            {                tmp /= i;            }        }    }    if (tmp > 1)    {        ans = ans / tmp * (tmp - 1);    }    return ans;}
int euler[N];void init_Euler()    //打表{    euler[1] = 1;    for (int i = 2; i < N; i++)    {        euler[i] = i;    }    for (int i = 2; i < N; i++)    {        if (euler[i] == i)        {            for (int j = i; j < N; j += i)            {                euler[j] = euler[j] / i * (i - 1);            }        }    }}
0 0
原创粉丝点击