Instructions

数学问题纯粹靠感觉啊。。。感觉很多定理都随缘啊。。。。大概总结一下8。


质数

无穷理论的证明:
设质数有有限的n个,依次为p₁,p₂,p₃,…,pn,则令N=p₁p₂p₃pn。
1.若N+1为质数,则N+1一定是一个新的质数
2.若N+1为合数,则N一定存在一个不等于p₁,p₂,p₃,…,pn的质数因子。

质数判定的方法:
1.枚举,范围[2,sqrt(n)]。
2.筛选法(打表预处理)
1)、Eratosthenes筛法:用质数i筛掉i的倍数。
:2i,3i,4i…都是合数,一般从ii开始筛,因为2i已经筛过了,3i被3筛过了。
①效率接近线性
②存在重复筛选的问题(eg:15被3、5都筛了一次)
2)、欧拉线性筛:每个合数只用被最小的质因子筛掉。
①num[i]记录i的最小质因子,如果num[i]==i,则i就是质数。
②接下来从小到大枚举已确定的质数primes[j],则i
primes[j]的最小质因子一定是primes[j],除非primes[j]>num[i]。
O(n)的时间复杂度。
欧拉筛模板:

inline void OULA(){for(int i=2;i<=maxn;i++){if(!num[i])primes[++cnt]=i;for(int j=1;i*primes[j]<=maxn;j++){num[i*primes[j]]=true;if(i%primes[j]==0)break;}}
}

约数

N=p1^c1*p2^c2*…*pm^cm。
①N的正约数{p1^b1*p2^b2*…*pm^bm|0<=bi<=ci}。
②N的正约数个数为(c1+1)(c2+1)…(cm+1)=∏i=1~m(ci+1)。
③N的所有正约数和为(1+p1+p1²+…+p1^c1)*…*(1+pm+pm²+…+pm^cm)。

求N的正约数集合:
枚举,1-sqrt(n),完全平方数需要特判。(约数有对称性定理)
对于正整数N,约数上限为2sqrt(n)个。
求1-N中所有数字的正约数:枚举时间复杂度O(N
sqrt(N))。
可以像Eratosthenes筛质数一样,i一定是i的倍数的约数,时间复杂度近似O(nlogn)。

欧拉筛+欧拉函数phi模板:

inline void OULA(){for(int i=2;i<=maxn;i++){if(!num[i]){primes[++cnt]=i;phi[i]=i-1;}for(int j=1;i*primes[j]<=maxn;j++){num[i*primes[j]]=true;phi[i*primes[j]]=phi[i]*(primes[j]-1);if(i%primes[j]==0){phi[i*primes[j]]=phi[i]*primes[j];break;}}}
}

直接求phi模板:

inline int phii(int x){ans3=n;for(int i=2;i<=sqrt(n+1);i++){if(x%i==0){ans3=ans3*(i-1)/i;while(x%i==0){x/=i;}}}if(x>1){ans3=ans3*(x-1)/x;}
}

试除法求约数模板:

inline void Factor(int x){for(int i=1;i<=sqrt(x+1);i++){if(x%i==0){ans[++cntt]=i;if(i!=x/i)ans[++cntt]=x/i;}}sort(ans+1,ans+cntt+1);for(int i=1;i<=cntt;i++){printf(" %lld",ans[i]);ans2+=ans[i];}printf("\n");
}

整数唯一分解:
a=p1^e1p2^e2p3^e3pn^en(p1<p2<…<pn);
b=p1^f1p2^f2p3^f3pn^fn。
则gcd(a,b)=p1^min(e1,f1)p2^min(e2,f2)pn^min(en,fn);
lcm(a,b)=p1^max(e1,f1)
p2^max(e2,f2)pn^max(en,fn)。
其因数个数为(e1+1)(e2+1)…(en+1)。

inline void workk(int x){vector<int>a;vector<int>b;int k=0;for(int i=2;i<=sqrt(x+1);i++){if(x%i==0){k=0;a.push_back(i);while(x%i==0){x/=i;k++;}b.push_back(k);}}if(x>1){a.push_back(x);b.push_back(1);}printf("%d=",n);for(int i=0;i<a.size();i++){printf("%d^%d",a[i],b[i]);if(i+1!=a.size())printf("*");}printf("\n");
}

矩阵

矩阵快速幂模板:

inline void Mull(){memset(ans,0,sizeof(ans));for(int i=1;i<=k;i++){for(int j=1;j<=k;j++){long long val=0;for(int q=1;q<=k;q++){val+=(ret[i][q]%m*a[q][j]%m)%m;}ans[i][j]=val%m;}}for(int i=1;i<=k;i++){for(int j=1;j<=k;j++){ret[i][j]=ans[i][j];}}
}
inline void Mull_Self(){memset(ans,0,sizeof(ans));for(int i=1;i<=k;i++){for(int j=1;j<=k;j++){long long val=0;for(int q=1;q<=k;q++){val+=(a[i][q]%m*a[q][j]%m)%m;}ans[i][j]=val%m;}}for(int i=1;i<=k;i++){for(int j=1;j<=k;j++){a[i][j]=ans[i][j];}}
}
inline void Quick_Pow(long long x){memset(ret,0,sizeof(ret));for(int i=1;i<=k;i++){ret[i][i]=1;}while(x){if(x&1)Mull();Mull_Self();x>>=1;}
}

快速幂优化递推例题链接:递推的矩阵优化

莫比乌斯反演

对于f(x),可以很方便得到∑d|nf(d),即:F(n)=∑d|nf(d)。
两个重要的反演公式:
1.F(n)=sigma n|k(f(k)) -->f(n)=sigma n|k(Mo[k/n]F(k))
2.F(n)=sigma k|n(f(k)) -->f(n)=sigma k|n(Mo[k]
F(n/k))
莫比乌斯(Möbius)函数:
①μ(d)=1,d=1;
②μ(d)=(-1)ⁿ,d=p₁p₂p₃…pn;
③μ(d)=0,d=others。(存在pn²质因子)
莫比乌斯函数预处理模板:

inline void Mobius(){Mo[1]=1;for(int i=2;i<=maxn-1;i++){if(!num[i]){primes[++cnt]=i;Mo[i]=-1;}for(int j=1;j<=cnt&&i*primes[j]<maxn;j++){num[i*primes[j]]=true;Mo[i*primes[j]]=Mo[i]*(-1);if(i%primes[j]==0){Mo[i*primes[j]]=0;break;}}}
}

例题:HAOI2011

卡特兰数

例题:NOIP普及组2003

转载于:https://www.cnblogs.com/virtual-north-Illya/p/10331081.html

数论(Mathmatics)总结[1]相关推荐

  1. 数论(一)——素数,GCD,LCM

    这是一个数论系列:) 一.素数 ×费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的.对 a = 2,满足的非素数 n 是存 ...

  2. 【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

    近期学了学数论,来写一波总结吧. (1)排列组合,比较基础的东西了吧.//只写个概念吧,(逃: 概念:就是从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合: ...

  3. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  4. 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  5. 《算法竞赛中的初等数论》(四)正文 0x40反演(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  6. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...

  7. 《算法竞赛中的初等数论》(三)正文 0x30 积性函数(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  8. 《算法竞赛中的初等数论》(二)正文 0x20同余(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  9. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. 剑指offer-面试题20.顺时针打印矩阵
  2. python微信红包代码_Python实现的微信红包提醒功能示例
  3. java8电脑版安装包下载百度云_everything电脑文件搜索工具
  4. Avalonia跨平台入门第十五篇之ListBox聊天窗口
  5. php版主动推送,织梦php主动推送完整实例(单篇推送版本)
  6. python自动化学习之语法学习(判断语句和循环语句)
  7. python中函数的返回值
  8. QCA9886降低功耗指令
  9. VS2010 Visual Assist X破解方法
  10. PHP HTML转PDF
  11. 开发中常用的工具类(一)
  12. mumu的adb_MuMu模拟器进行adb操作
  13. 不知道什么工具可以转换图片格式?好用的图片格式转换工具分享
  14. Matlab 中min(),min(min()),max(),max(max())的介绍和分析
  15. 微信公众号 JS接口安全域名 配置
  16. 2020中国人工智能产业链企业图谱(名单)
  17. c语言 电话簿 链表,C语言_链表_结构体_电话簿简单实现
  18. Java中Scanner 的用法/ Scanner怎么使用
  19. POJ3069-Saruman's Army-贪心水题
  20. 绝知5G须躬行,带你了解多网聚合路由系统

热门文章

  1. EDA实验课课程笔记(五)——NC-verilog的介绍与使用(一)
  2. ISE使用中RAM IP核配置及ram测试(两种测试)
  3. ROS 搞懂多话题回调机制以及消息队列
  4. docker安装redis,使用jedis轻松操作redis
  5. RenderTransformOrigin 的作用
  6. 嘉兴 机器人仓库 菜鸟_“199”机器人火了,天猫双11,有1亿人次“云监工”物流发货...
  7. 对付洗稿者的一个脑洞
  8. mysql 1690_mysql error BIGINT UNSIGNED value is out of range in 解决办法
  9. ArcGIS水文分析实战教程(6)河流提取与河网分级
  10. erlang四大behaviour简述