GCD,LCM

定理

a、b两个数的最大公约数乘以它们最小公倍数等于a和b的乘积

axb=GCD(a,b)xLCM(a,b)

据此定理,求3与8的最小公倍数可以为:LCM(3,8)=3x8divGCD(3,8)=24

欧几里得算法

构造关系:GCD(a,b)=GCD(b, a mod b)

 int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}

二进制最大公约数算法

  1. 递归终止条件:GCD(m,m)=m

  2. 递归关系式:

    m<n时:GCD(m,n)=GCD(n,m)

    m为偶数,n为偶数:Gcd(m,n)=2*Gcd(m/2,n/2)

    m为偶数,n为奇数:Gcd(m,n)=Gcd(m/2,n)

    m为奇数,n为偶数:Gcd(m,n)=Gcd(m,n/2)

    m为奇数,n为奇数:Gcd(m,n)=Gcd(n,m-n)

不定方程的整数解

方程ax+by=c有整数解的充要条件:gcd(a,b) | c

设d=gcd(a,b)

则若我们求得一组(x0,y0)满足ax0+by0=d

则可以得到原方程的一组解:((x0Xc)/d, (y0xc)/d)

扩展欧几里得算法

作用

已知a,b,求解一组x,y,使他们满足贝祖等式[^ax+by=gcd(a,b)=d](根据数论原理,解一定存在)。常用在求解模线性方程组中,也可以用来求解乘法逆元。

Int exGcd(int a,int b,int& x,int& y)
{
if(b==0)
{
x=1;y=0;
return a;
}
int r=exGcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
return r;
}

勾股数

勾股数有如下几个性质:

  1. X,Y,Z一定两两互质
  2. X,Y一定一奇一偶
  3. X+Z一定是一个完全平方数
  4. (Y+Z)/2也是一个完全平方数
  5. XxYxZ一定能被60整除

应用举例

​ 编程求n个(n≤100)正整数Ai(Ai≤30000,1≤i≤n)的最大公约数和最小公倍数。假设解一定在长整数范围内。

先求出两个数的最大公约数(最小公倍数),再和其他数求最大公约数(最小公倍数),只需调用函数n-1次。可以利用欧几里得算法快速实现:gcd(a1,a2,...,an)=gcd(gcd(a1,a2,...,an-1),an)

​ 阶乘问题

​ 整数n的阶乘n!是从1到n的所有整数的乘积。编程:输入一正整数n(n≤65000),给出n!的值从右至左有多少位连续的零?并输出n!的值从右至左第一个非零位的值。

​ 例如:n=5,则5!的值等于120,从右至左有1位连续的0;从右至左第一个非零的值为2。你的输出:

​ 1

​ 2

​ 当n=11时,程序应该输出:

​ 2

​ 8

​ 分析:

​ N!的值从右至左连续零的个数,实际上等于n!中所包含的5的因子的总数,这是因为:2x5=10.而n!中包含的2的因子的总数显然比5的因子总数大得多。

​ 在去除了所有从右至左连续的零以后,计算n!的最右非零位数值就可以用以下的公式:

(axb)%10=(a%10)x(b%10)%10

同余

定义

a%m=b%m,则称a,b mod m同余

概念

设a,b为两个整数,且它们的差a-b能被某个自然数m所整除,则就称a就模m来说同余于b,或者说a和b关于模m同余,

​ 记为:a=b (mod m)

它意味着:a-b=mxk(k为整数)

性质

对于整数a,b,c和自然数m,n则对模m同余满足:

  1. 自反性:a = a(mod m)

  2. 对成性:若a=b(mod m),则b = a(mod m)

  3. 传递性:若a=b(mod m),b=c(mod m),则a=c(mod m)

  4. 同加性:若a=b(mod m),则a+c=b+c(mod m)

  5. 同乘性:若a=b(mod m),则aXc=bXc

    ​ 一般情况,a=b(mod m),c=d(mod m),则:aXc=bXd(mod m)

  6. 同幂性:若a=b(mod m)则an=bn(mod m)

  7. 若a mod p=x, a mod q=x,p、q互质,则a mod(pXq)=x

    但是同余不满足同除性,即:a/n != b/n(mod m)

素数

素数的几个定理

唯一分解定理

​ 若整数a>=2,那么a一定可以表示为若干个素数的乘积(唯一的形式),即a=p1xp2xp3x...ps(其中pj为素数,称为a的素因子,1<=j<=s)

ACM-学习记录-数论的更多相关文章

  1. ACM学习-POJ-1143-Number Game

    菜鸟学习ACM,纪录自己成长过程中的点滴. 学习的路上,与君共勉. ACM学习-POJ-1143-Number Game Number Game Time Limit: 1000MS   Memory ...

  2. acm学习指引

    acm学习心得及书籍推荐   一般要做到50行以内的程序不用调试.100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划练练: 第 ...

  3. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  4. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  5. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  6. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  7. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  8. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

  9. UWP学习记录9-设计和UI之控件和模式6

    UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...

  10. UWP学习记录8-设计和UI之控件和模式5

    UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...

随机推荐

  1. ssh通过sock5的问题kex_exchange_identification: Connection closed by remote host

    工作需要,连接几台外网的服务器.由于移动的网络直连,经常会连不上,所以想通过本地的sock5代理连接. 神奇的事情发送了,通过sock5代理,有几台主机可以连上,有几天报上面的错误. 经过反复测试,外 ...

  2. PHP Redis - List (列表)

    Redis列表是简单的字符串列表,按照插入顺序排序. 一个列表最多可以包含  232-1 个元素 (4294967295, 每个列表超过40亿个元素) 插入元素在列表头部(lPush,Lpushx) ...

  3. JS实现中英文混合文字友好截取功能

    众所周知,一个汉字等于两个英文字母的长度.那么,从汉字或者英文字母中截取相同长度文字则显示的长度则不一样.此时用户体验会不好.那么怎么解决呢?往下看 <script> /** * JS实现 ...

  4. Python中使用pyyaml对yaml文件进行读写删操作

    安装库 pip install pyyaml 读取yaml/yam格式的文件 def get_yaml(filepath) -> list: """ :param ...

  5. software engineering homework 1

    1. 回顾你过去将近3年的学习经历 当初你报考的时候,是真正喜欢计算机这个专业吗? 你现在后悔选择了这个专业吗? 你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其它领域)? 答:一开始感觉编程 ...

  6. jmeter之【报错记录】

    { "code": "E0001", "success": false, "description": "Co ...

  7. django_应用及分布式路由

    一.应用的定义 1.应用在Django中是一个独立的业务模块,可以包含自己的路由.视图.模板.模型. 例如如下图所示,一个资讯类网站中会有不同的模块,如果所有的模块共用一个views.py文件,则会导 ...

  8. FCC 中级算法题 Everything Be True

    Everything Be True 所有的东西都是真的! 完善编辑器中的every函数,如果集合(collection)中的所有对象都存在对应的属性(pre),并且属性(pre)对应的值为真.函数返 ...

  9. gensim

    官方文档: https://radimrehurek.com/gensim/models/word2vec.html 1.训练模型定义 from gensim.models import word2v ...

  10. VMware linux 网络设置

    控制面板\所有控制面板项\网络连接 1.选择 VMware Virtual Ethernet Adapter for VMnet8 网卡  ->属性-->网络 2.勾选 -> VMw ...