![](https://img-blog.csdnimg.cn/20201107110234180.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数论
数论是纯粹数学的分支之一,主要研究整数的性质。该分栏包括质数,约数,欧拉函数,快速幂,扩展欧几里得算法,中国剩余定理,高斯消元,求组合数,容斥原理,博弈论等内容。
Carney_Lsz
要相信每天都值得期待.
展开
-
筛质数—(朴素筛法、埃氏筛法、欧拉筛法(线性筛法))
首先有一个最暴力的写法int primes[N],cnt=0;bool st[N]={false};void get_prime(int n){ for(int i=2;i<=n;i++) { if(!st[i]) primes[cnt++]=n; for(int j=i+i;j<=n;j+=i) st[j]=true; }}1.埃拉托色尼筛法(the Sieve of Er原创 2020-11-18 11:11:06 · 1078 阅读 · 1 评论 -
试除法解决分解质因数
1.利用试除法分解质因数时最原始的写法是下面的divide1()函数,直接从2~n遍历循环,但是时间复杂度是O(N),很容易看出若n是一个很大的数会导致超时,因此要改进divide1()函数。void divide1(int n){ for(int i=2;i<=n;i++) if(n%i==0) { int s=0; while(n%i==0) {原创 2020-11-17 09:49:48 · 1226 阅读 · 0 评论 -
试除法解决质数的判定
1.利用试除法判定质数时最原始的写法是下面的is_prime1()函数,直接从2~n-1遍历循环,但是时间复杂度是O(N),很容易看出若n是一个很大的数会导致超时,因此要改进is_prime1()函数。bool is_prime1(int n){ if(n<2) return false; for(int i=2;i<n;i++){ if(n%i==0) return false; } return true;}原创 2020-11-17 09:17:59 · 1401 阅读 · 2 评论 -
浅谈欧几里德算法 GCD和LCM
首先介绍什么欧几里得算法最大公约数问题是最早被研究的算法问题之一了,并且是ACM竞赛中能涉及到的很多数论内容,比如模线性方程,模线性方程组的基础。欧几里得算法 (Euclidean algorithm) ,即大部分选手所知的“辗转相除法”,其核心在于不断将两数规模变小,最后实现对数时间内求解两个数的最大公约数。其核心定理是:gcd(a,b)=gcd(b,a%b)下面先证明这个核心定理:证明:设a=kb+r,其中k和r分别为a除以b得到的商和余数。则有r=a-kb成立。设d为a原创 2020-08-30 16:17:38 · 381 阅读 · 0 评论