初等数论初步


初学数论

学得十分肤浅

判断质数

for(i = 2;i * i <= n;i++)
    if(n % i == 0)
    {
    	able = 1;
    	break;
    }  

判断1~n范围内的质数

inline void sieve(int x)
{
    int i,j;
    prime[1] = 1;
    for(i = 2;i * i <= x;i++)
        if(!prime[i])
            for(j = i * i;j <= x;j += i) prime[j] = 1;
}

然后学的是

整数的唯一分解

对于 ∀ \forall n

可表示为n = ∑ i = 1 , p ∣ n m i \sum_{i = 1,p|n}^{m_i} i=1,pnmi p i w i p^{w_i}_i piwi

//factorize
for(i = 2;i * i <= n;i++)
    {
        if(!vis[i])
        {
            p[++k] = i;
            while(n % i == 0)
                n /= i,w[k]++;
        }
    }
if(n != 1) p[++k] = n,w[k]++;

最小公倍数和最大公约数(gcd&&lcm)

对于 ∀ \forall a,b ∈ \in Z

辗转相除法

inline LL gcd(LL a,LL b)
{
    if(a < b) exchange(a,b);
    if(b == 0) return a;
    return gcd(b,a % b);
}

还可以用整数的唯一分解来求

g c d ( a , b ) = ∑ i = 1 m a x ( m a , m b ) p i m i n ( w a i , w b i ) gcd(a,b) = \sum^{max(m_a,m_b)}_{i=1}p_i^{min(w_{ai},w_{bi})} gcd(a,b)=i=1max(ma,mb)pimin(wai,wbi)

l c m ( a , b ) = ∑ i = 1 m a x ( m a , m b ) p i m a x ( w a i , w b i ) lcm(a,b) = \sum^{max(m_a,m_b)}_{i=1}p_i^{max(w_{ai},w_{bi})} lcm(a,b)=i=1max(ma,mb)pimax(wai,wbi)

a ∗ b = g c d ( a , b ) ∗ l c m ( a , b ) a * b = gcd(a,b) * lcm(a,b) ab=gcd(a,b)lcm(a,b) 有重要作用

∀ \forall n的约数个数

d(n) = ∏ i = 1 m ( w i + 1 ) \prod_{i=1}^m(w_i+1) i=1m(wi+1)

乘法原理,+1指的指数取0

∀ \forall n的约数之和

s(n) = ∏ i = 1 m ∑ j = 0 w j p i j \prod_{i=1}^m\sum_{j=0}^{w_j}p_i^j i=1mj=0wjpij

清晰易懂 不解释

同余

a ≡ \equiv b(mod m)

有性质
1: a ≡ \equiv b(mod m) ⇒ \Rightarrow b ≡ \equiv a(mod m)

2: a ≡ \equiv b(mod m) , b ≡ \equiv c(mod m) ⇒ \Rightarrow a ≡ \equiv c(mod m)

3: a ≡ \equiv b(mod m) ⇔ \Leftrightarrow m|(a - b)

4: a ≡ \equiv b(mod m) , n|m 那么 a ≡ \equiv b(mod n)

欧拉函数

在这里插入图片描述

看看 这位帅哥叫欧拉(滑稽

ϕ ( n ) \phi(n) ϕ(n) 小于n的正整数中与n互质的数的数目

ϕ ( n ) \phi(n) ϕ(n) = n * ∏ i = 1 m ( 1 − 1 p i ) \prod_{i=1}^m(1 - \frac{1}{p_i}) i=1m(1pi1)

计算 ϕ ( n ) \phi(n) ϕ(n)

inline int phi(int n)
{
    int i,res = n;
    for(i = 2;i * i <= n;i++)
    {
        if(n % i == 0)
            res = res / i * (i - 1);
        while(n % i == 0) n /= i;
    }
    if(n > 1) res = res / n * (n - 1);
    return res;
}

计算 ϕ ( i ) \phi(i) ϕ(i)(1<=i<=n)

inline void sieve(int n)
{
    phi[1] = 1;
    int i,j;
    for(i = 2;i <= n;i++)
    {
        if(!vis[i])
        {
            prime[++pn] = i;
            phi[i] = i - 1;
        }
        for(j = 1;j <= pn&&prime[j] * i <= n;j++)
        {
            vis[prime[j] * i] = 1;
            if(i % prime[j] == 0)
            {
                phi[i * prime[j]] = phi[i] * prime[j];
                //注释1
                break;
            }
            phi[i * prime[j]] = phi[i] * (prime[j] - 1);
			/*积性函数f(a*b) = f(a) * f(b)(gcd(a,b) = 1)
        	phi[prime[j] - 1] = prime[j] - 1(prime[j]为质数)
        	*/
        }
    }
}

注释1:phi[i * prime[j] = n * prime[j] * ∏ i = 1 m ( 1 − 1 p i ) \prod_{i=1}^m(1 - \frac{1}{p_i}) i=1m(1pi1)

费马小定理

若有质数p,gcd(p,a) = 1

则有 a p − 1 a^{p-1} ap1 ≡ \equiv 1(mod p)

二次探测定理

x 2 x^2 x2 ≡ \equiv 1(mod p)

当 p 为奇质数时

x 1 = 1 x_1 = 1 x1=1 x 2 = p − 1 x_2 = p - 1 x2=p1

威尔逊定理

p 是 质 数 ⇔ ( p − 1 ) ! ≡ − 1 ( m o d p ) p是质数\Leftrightarrow (p - 1)! \equiv -1(mod p) p(p1)!1(modp)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值