码迷,mamicode.com
首页 > 其他好文 > 详细

数论一点点总结

时间:2018-09-28 01:28:57      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:除法   欧几里得算法   情况下   article   博客   无法   地址   for   uri   

数论基础

最大公约数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

数论一点点总结

标签:除法   欧几里得算法   情况下   article   博客   无法   地址   for   uri   

原文地址:https://www.cnblogs.com/gzr2018/p/9716225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!