任意一个素数(除2以外)都可以被分成两个连续正整数的和吗?

《初等数论》版习题解答


第一章 整数的可除性 §1 整除的概念·带余除法 1.证明定理3 定理3 若都是得倍数,是任意n个整数,则是得倍数. 证明: 都是的倍数。 存在个整数使 又是任意个整数 即是的整数 2.证明 证明 又,是连续的三个整数 故 从而可知 3.若是形如(x,y是任意整数,a,b是两不全为零的整数)的数中最小整数,则. 证: 不全为 在整数集合中存在正整数,因而有形如的最小整数 ,由带余除法有 则,由是中的最小整数知 (为任意整数) 又有, 故 4.若a,b是任意二整数,且,证明:存在两个整数s,t使得 成立,并且当b是奇数时,s,t是唯一存在的.当b是偶数时结果如何? 证:作序列则必在此序列的某两项之间 即存在一个整数,使成立 当为偶数时,若则令,则有 若 则令,则同样有 当为奇数时,若则令,则有 若 ,则令,则同样有,综上所述,存在性得证. 下证唯一性 当为奇数时,设则 而 矛盾 故 当为偶数时,不唯一,举例如下:此时为整数 §2 最大公因数与辗转相除法 1.证明推论4.1 推论4.1 a,b的公因数与(a,b)的因数相同. 证:设是a,b的任一公因数,|a,|b 由带余除法 |, |,┄, |, 即是的因数。 反过来|且|,若则,所以的因数都是的公因数,从而的公因数与的因数相同。 2.证明:见本书P2,P3第3题证明。 3.应用§1习题4证明任意两整数的最大公因数存在,并说明其求法,试用你的所说的求法及辗转相除法实际算出(76501,9719). 解:有§1习题4知: 使。, ,使如此类推知: 且 而b是一个有限数,使 ,存在其求法为: 4.证明本节(1)式中的 证:由P3§1习题4知在(1)式中有 ,而 , ,即 §3 整除的进一步性质及最小公倍数 1.证明两整数a,b互质的充分与必要条件是:存在两个整数s,t满足条件. 证明 必要性。若,则由推论1.1知存在两个整数s,t满足:, 充分性。若存在整数s,t使as+bt=1,则a,b不全为0。 又因为,所以 即。 又, 2.证明定理3 定理3 证:设,则 ∴又设 则。反之若,则, 从而,即= 3.设 (1) 是一个整数系数多项式且,都不是零,则(1)的根只能是以的因数作分子以为分母的既约分数,并由此推出不是有理数. 证:设(1)的任一有理根为,。则 (2) 由, 所以q整除上式的右端,所以,又, 所以; 又由(2)有 因为p整除上式的右端,所以 ,,所以 故(1)的有理根为,且。 假设为有理数,,次方程为整系数方程,则由上述结论,可知其有有理根只能是 ,这与为其有理根矛盾。故为无理数。 推论3.3 设a,b是任意两个正整数,且 ,,, ,,, 则,, 其中,, 证:, ∴ ∴ ,. ∴ ,又显然 ∴ ,同理可得, 推广 设,, (其中为质数为任意n个正整数), 则 4.应用推论3

堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.

通常我们将数组的第一个元素定义为比较元素,通过一趟将要的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速,整个过程可以递归进行,以此达到整个数据变成有序序列。

a对较小的数据列使用索引,这样会使索引文件更小,同时内存中也可以装载更多的索引键。

c.并不是所有索引对查询都有效,当索引列有大量数据重复时,查询可能不会去利用索引。

d.索引并不是越多越好。提高查询效率,但同时也降低了insert及update的效率,因为可能会重建索引。

e.应尽量避免在where子句中使用!=或<>操作符或使用or来连接条件,否则引擎放弃使用索引而进行全表扫描。

f.Where后的查询字段尽量减少使用函数或者表达式操作,因为会造成索引失效。

G.尽量的扩展索引,不要新建索引。

三、索引的最左优先原则

四、数据库左连、右连和内连

左联:首先取出a表中所有数据,然后再加上与a,b匹配的的数据

内联:两个表a,b相连接,要取出id相同的字段

右联:指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据

五、存储引擎以及他们之间的区别

InnoDB:提供了良好的事务处理、崩溃修复能力和并发控制。为了维护数据完整性,InnoDB还支持外键完整性约束。

支持自动增加列AUTO_INCREMENT(自动增长列)属性。InnoDB提供行级锁,大幅度提高了多用户并发操作的性能。

缺点是读写效率较差,占用的数据空间相对较大。使用场景,如:银行(对事务的完整性要求比较高),售票(要求实现并发控制)。

MyISAM:使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。

拥有较高的插入、查询速度,但不支持事物。基于MyISAM存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用的磁盘空间较小。

B+树是在B树的基础上改造,它的数据都在叶子节点,同时,叶子节点之间还加了指针形成.

B+树所有的数据都在叶子节点,不用跨层,同时有结构,只需要找到首尾,通过就能把所有数据查询出来.

七、数据库索引有哪些类型

九、全文索引跟其他索引的区别,怎么实现的

十、查重复‘字段’,统计重复次数:

十二、一个文件夹目录,获取该目录下以’ppt‘结尾的文件:find dir -name "*.txt"

2、sh/bash:打开一个subshell去读取、执行a.sh,而a.sh不需要有"执行权限".通常在subshell里运行的脚本里设置变量,不会影响到父shell的。

十四、LInux的同步和异步锁

十五、grep进行文件内容匹配工作是用到的参数主zha要有两个,分别是

1.取出两个文件中的相同部分内容“-wf”参数.

2.取出两个文件中的不同部分内容“-wvf”参数

1、SSL怎么加密的?

其中非对称加密用于在握手过程中加密生成的密码,对称加密用于对真正传输的数据进行加密,而HASH用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密对其加密。

非对称加密算***生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密,所以网站都会非常小心的保管自己的私钥,防止泄漏。

1、浏览器将自己支持的一套加密规则发送给网站。

2、网站从中选出一组加密与HASH,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3、获得网站证书之后浏览器要做以下工作:a)验证证书的合法性b)如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。c)使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

4、网站接收浏览器发来的数据之后要做以下的操作:a)使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。b)使用密码加密一段握手消息,发送给浏览器。

5、浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密进行加密。

1)发送端首先发送一个带有SYN标志地数据包给接收方。

2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。

3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。

2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

为什么是四次?当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付.

3、TCP面向字节流,TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段lP地址范围,客户机登录服务器时就可以自动获得服务器分配的lP地址和子网掩码。采用udp传输。

2、两个的第一个公共节点

3、输入一串由ABCD四个字随机组成的字符串和一个整数k,返回字符串种前k个字的顺序重复了几次。

4、判断ip地址的合法性。针对编程的测试用例

5、鸡兔同笼,一半的兔子伸起一半的脚,输入地上有几只脚,列出所有的可能性(兔子是基数则整除2)

8、手撕:摸小球怎么降低空间复杂度,怎么设计测试用例测试该程序

9、数组中找到有没有三个数字从左到右大小依次递增,返回true false

10、就是找数组里面左边最大,右边最小的数字那道题。(两个数组实现,一个记录leftMax,另一个记录rightMin)

11、长度为n的数组,求未出现的最小正整数。

12、每k个一组(力扣15)

14、Topk问题:从N个数中找出第K大的数

15、大数相加(剑指原题)

16、字符串中只出现一次的字符、找出数组中最小的四个数字

17、:求出数组中出现次数最多且最大的数

19、手撕:实现栈的功能

20、给定一个n * m的矩阵a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。

jvm内存共分为虚拟机栈,堆,方法区,程序计数器,本地方法栈

1,虚拟机栈:线程私有,每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数帧,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机中的出栈和入栈。

2,堆:线程共享,被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。

3,方法区:线程共享;被所有线程共享的一块内存区域;用于存储已被虚拟机加载的类信息,常量,静态变量等。

4,程序计数器:线程私有,是当前线程所执行的字节码的行号指示器,每条线程都有一个独立的线程计数器,这类内存也被称为"线程私有"的内存。

5, 本地方法栈:线程私有;主要为虚拟机使用到的Native方法服务。

JVM中堆和栈的区别:

1、最主要的区别就是栈内存用来存储局部变量和方法调用。

而堆内存用来存储Java中的对象。无论是成员变量,局部变量,还是类变量,它们指向的对象都存储在堆内存中。

栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属线程中可见,即栈内存可以理解成线程的私有内存。而堆内存中的对象对所有线程可见。堆内存中的对象可以被所有线程访问。

4、空间大小:栈的内存要远远小于堆内存,如果你使用递归的话,那么你的栈很快就会充满。如果递归没有及时跳出,很可能发生StackOverFlowError问题。可以通过-Xss选项设置栈内存的大小。-Xms选项可以设置堆的开始时的大小,-Xmx选项可以设置堆的最大值。

控制反转(IoC),获得依赖对象的方式反转

一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(反射,它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的)。

我的理解是,创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。

aop:可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。

Java的内部类和静态内部类的区别?

线程的实现方式有哪些?

平常遇到过哪些异常?捕获异常有哪些方法?

一面:(二面、三面忘记记录了)

1、拥塞控制的场景以及解决方法(四种)。

一般原理发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机)的需求>可用资源。

作用拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载。拥塞控制要做的都有一个前提:就是网络能够承受现有的网络负荷。

对比流量控制:拥塞控制是一个全局的过程,涉及到所有的主机、路由器、以及降低网络相关的所有因素。流量控制往往指点对点通信量的控制,是端对端的问题。

慢启动和拥塞避免:发送方维持一个叫做拥塞窗口cwnd,初始值为1,每经过一个传输伦次(RTT时间),cwnd加倍(指数增长),为了防止拥塞窗口cwnd增长过大而引起网络拥塞,设置一个慢开始门限ssthresh。

1.当cwnd 算法 ,使用上述的慢开始

2.当cwnd>ssthresh,停止使用慢开始,使用拥塞避免(线性增长每次加一)

快重传:当接收方收到了一个失序的报文,马上报告给发送方,我没收到,赶紧重传。发送方一连收到三个重复的ACK,那么不必等待重传计时器到期,立即重传。

快恢复:当发送方连续收到三个重复确认,执行乘法减小,ssthresh减半。然后执行拥塞避免,使拥塞窗口缓慢增大。

非对称加密用于在握手过程中加密生成的密码,对称加密用于对真正传输的数据进行加密,而HASH用于验证数据的完整性。由于浏览器生成的密码是整个数据加密的关键,因此在传输的时候使用了非对称加密对其加密。

非对称加密算***生成公钥和私钥,公钥只能用于加密数据,因此可以随意传输,而网站的私钥用于对数据进行解密。

1、浏览器将自己支持的一套加密规则发送给网站。

2、网站从中选出一组加密与HASH,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

3、获得网站证书之后浏览器要做以下工作:a)验证证书的合法性b)如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。c)使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。

4、网站接收浏览器发来的数据之后要做以下的操作:a)使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。b)使用密码加密一段握手消息,发送给浏览器。

5、浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密进行加密。

3、Java多线程实现的方法,各自的优劣对比。

1.继承Thread类,启动线程通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。优点:代码简单。缺点:该类无法继承别的类。

2.实现Runnable接口,优点:继承其他类。同一实现该接口的实例可以共享资源。缺点:代码复杂

3.实现Callable接口,通过FutureTask包装器来创建Thread线程:优点:可以获得异步任务的返回值

4.线程池:实现自动化装配,易于管理,循环利用资源。

4、接口和抽象类的区别。

1、抽象类和接口都不能被实例化。

2、两者都是用来抽象具体对象的,但接口的抽象级别更高。

3、类可以实现多个接口,但只能继承一个抽象类。

4、抽象类可以有具体的属性和方法,但接口只能有抽象方法和不可变常量(定义的常量都是公共的静态常量,用final来修饰)。

6、接口是设计的结果(注重功能实现),抽象类是重构的结果(实现代码复用)。

5、垃圾回收原理以及gc(三种),复制的原理。

1、随着程序运行,内存中存在的实例对象、变量等信息占据内存越来越多,如果不及时进行垃圾回收,程序性能下降,甚至会由于内存不足出现系统异常。回收的时间点:(1)该类的实例对象都已被回收(2)加载该类的classloader已经被回收(3)该类对应的反射类java.lang.class对象没有被任何地方引用。

2、需要回收的区:堆和方法区。

3、常见的回收:三个都基于根搜索去判断一个对象是否应该被回收,而支撑根搜索可以正常工作的理论依据,就是语法中变量作用域的相关内容。

(1)标记-清除:将进行回收的做标记,之后扫描清除。

(2)复制:将内存划分为两个区间,在任意时间点,所有动态分配的对象都只能分配在其中一个区间(称为活动区间),而另外一个称为空闲区间。当有效内存空间耗尽时,JVM将暂停程序运行,开启复制GC线程。接下来GC线程会将活动区间内的存活对象,全部复制到空闲区间,且严格按照内存地址依次排列,与此同时,GC线程将更新存活对象的内存引用地址指向新的内存地址。此时,空闲区间已经与活动区间交换,而垃圾对象现在已经全部留在了原来的活动区间,也就是现在的空闲区间。事实上,在活动区间转换为空间区间的同时,垃圾对象已经被一次性全部回收。

(3)标记-整理:标记:遍历GC Roots,然后将存活的对象标记。整理:移动所有存活的对象,且按照内存地址次序依次排列,然后将末端内存地址以后的内存全部回收。

6、Java深复制浅复制区别。

7、Java并发控制实现方式。

8、索引概念、使用位置及优化。

9、数据库内连接、左连和右连区别。

10、进程间的通信方式。

1、输出比给定数字大的下一个数字(力扣原题)

2、定义:给定N个数,称出现次数最多的数为众数,若某数出现的次数大于N/2称为绝对众数。如:A={1, 2, 1, 3, 2}中,1和2都是众数,但都不是绝对众数。

如:A={1,2,1,3,1}中,1是绝对众数。求给定数列的绝对众数。

二面计算题:输出所有子集,三面计算题:大数相加

能将任意8个连续的正整数分为两组,使得每组4个数的平方和相等吗?如果能,请给出一种分组法,并加以验证,如果不能,请说明理由.

共回答了19个问题采纳率:94.7%

我要回帖

更多关于 相邻两素数之差 的文章

 

随机推荐