数论一点点总结

Posted gzr2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数论一点点总结相关的知识,希望对你有一定的参考价值。

数论基础

最大公约数Gcd

int gcd(int a, int b) //a大于b
{
    return a % b == 0 ? b : gcd(b, a % b);
}

最小公倍数Lcm

int Lcm(int a,int b)
{
return a/gcd(a,b)*b;
}

费马小定理

费马小定理(Fermat Theory)是数论中的一个重要定理,其内容为:假设p是质数(素数),且
Gcd(a,p)=1,那么a^(p-1) ≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。该定理是1636年皮埃尔·德·费马发现的。

唯一分解定理

算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。(素数的分解方法唯一)
G - Pairs Forming LCM(例题)

拓展的欧几里得算法

素数定理

Eratosthenes筛法

逆元(inv)

1.什么是逆元

当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:
设c是b的逆元,则有bc≡1(mod m);
则(a/b)%m = (a/b)
1%m = (a/b)bc%m = ac(mod m);
即a/b的模等于a
b的逆元的模;
逆元就是这样应用的

2.求逆元的方法

(1).费马小定理

在是素数的情况下,对任意整数都有。 如果无法被整除,则有。 可以在为素数的情况下求出一个数的逆元,,即为逆元。
题目中的数据范围1<=x<=10^9,p=1000000007,p是素数;
所以x肯定就无法被p整除啊,所以最后就得出x^(p-2)为x的逆元啦。
复杂度O(logn)

const int mod = 1000000009;
long long quickpow(long long a, long long b) {

    if (b < 0) return 0;

    long long ret = 1;

    a %= mod;

    while(b) {

        if (b & 1) ret = (ret * a) % mod;

        b >>= 1;

        a = (a * a) % mod;

    }

    return ret;
}
long long inv(long long a) {

    return quickpow(a, mod - 2);

}

本文来自 Here_jiaxinwei 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/baidu_35643793/article/details/75268911?utm_source=copy

以上是关于数论一点点总结的主要内容,如果未能解决你的问题,请参考以下文章

PAT 数列的片段和简单数论

LeetCode数论题目总结

数论模板总结 -- 未完待续

数论总结1(基础数论)

小升初数学数论知识归纳总结

数论的一点前置知识