【初等数论】 02 - 整除与公约数

  当从这里开始的时候,你的行囊里不需要太多的东西,只要会整数的加减乘除即可。东西多了不仅帮不了你,反而会成为前进的负担。正如在前两篇中一样,你需要首先抛开一切固有思维,清空大脑,带着孩童般的好奇心重新认识这个世界。由于数论经常出现于奥数和智力题中,它往往被当成一种智力游戏,但随着研究的深入,你需要建立一套理论才能看清本质。我们可以从最简单的定义出发,利用理性思维建立这些理论。做题是学习数论的必经途径,你需要在不断地思考中才能有更深刻的理解,但这里我只打算叙述最基础的思想和结论。

1. 整除

  数论研究整数本身(或自然数,语境自明),初等数论主要研究整数之间的关系。整数的运算中,加减是最平凡的,得不出什么深入的结论,从而乘除法是唯一可以着手的地方。考虑一个简单的等式ma=b(以后若不作特殊说明,所有符号表示整数),任何两个整数之间都可以有m,a这样的乘法运算,但却并不是所有整数都有等式中ab的关系。为此,当a0时,定义满足等式的a整除b,或ba整除,a称为b约数b称为a倍数,记作ab,否则记为ab

  仅从定义出发可以得到整除的许多基本性质,这里就不一一列举了,只给出一个最具代表性的:式子(1),即a的倍数的线性组合仍是a的倍数。整数集线性组合的这一性质体现了元素之间的共性,以后还会继续深究,这里先举一例来感受其意义。若an,bn,则有abnb,abna,进而有abn(ax+by),所以如果有ax+by=1,则有abn

(1)abk,(k=1,2,,n)ab1x1+b2x2++bnxn

  考虑n的所有倍数的集合kn,它的元素有无穷多个,且性质是平凡的,不多阐述。现在来考虑n的所有约数,显然它们是有限的,但我们似乎还得不出更多的结论。不妨先考察一类特殊的数:如果p>1除了±1±p外没有其它约数,p称为质数或素数,反之叫合数,今后我们会约定俗成地用p,q表示素数。直观上素数是不能再分解的数,它们是整数的基本因子,任何整数都可以通过有限步分解为素数的乘积。

  一个自然的问题是,这样的分解唯一吗?你固有的知识可能使你对这个问题相当地自信,但如果冷静思考地一番,就会发现这种自信其实是没有根据的。它的证明并不十分显然,这里通过反证法来推导。假设有某些整数的素数分解不唯一,则存在最小的这样的数,并设它有两个分解式a=p1p2pn=q1q2qm,其中m,n>1,并且素数按大小排列。由a的最小性知piqj,假设p1>q1,考察式(2)。容易证明后一分解式中不含q1,从而b<a有两个不同的分解式。这与a的最小性矛盾,故所有整数都存在唯一的的素数分解式,即表达式(3)唯一。这个证明最早由高斯给出,被称为算术基本定理,它使得整数可以被完全解析。

(2)b=aq1p2pn=q1(q2qmp2pn)=(p1q1)p2pn

(3)a=p1e1p2e2pses

  现在来看数a的所有约数,容易知道它们的分解式必定是式子(4)。若记a共有τ(a)个约数,且它们的和为σ(a),则有公式(5)(6)。

(4)p1e1p2e2pses,(0ekek)

(5)τ(a)=k=1sτ(pkek)=k=1s(ek+1)

(6)σ(a)=k=1sσ(pkek)=k=1spkek+11pk1

  来思考几个问题热热身吧:

   求满足τ(n)=6的最小整数;

   求da1d的值。

2. 公约数

   有了算术基本定理,整数之间的倍数关系就基本清楚了。而对于两个任意的整数(不一定有倍数关系),只能通过它们共同的约数或倍数来取得联系。两个数a,b共同的约数称为它们的公约数,最大的那个叫最大公约数,记作(a,b),类似还有公倍数最小公倍数[a,b]的概念,最大公约数为1的两个数称为互素既约的。这些概念都有一些比较简单的性质,可以通过算术基本定理去证明,后面会罗列。公约(倍)数为研究整数之间的关系提供了便利,但它们的定义并不依赖于算术基本定理,你完全可以仅从定义出发得到那些常用结论,算术基本定理只是提供了一种方法而已。

  公约数一定程度上体现了整数之间的相关程度,互素则表现了整数之间的无关性。这个观念为我们分析整数集的结构提供了一个好的思想,不大于m的所有数可以按照和m的相关程度分类,这个话题我们会在后面展开。现在来考虑一下与m无关的(互素)数的个数φ(m),对素数p显然有φ(p)=p1φ(pe)=pe1(p1),利用容斥原理排除掉不互素的数之后可以得到公式(7)(下一篇会有另一种方法证明)。

(7)φ(m)=mk=1s(11pk)=k=1sφ(pkek)

  算术基本定理虽然很强大,但用它来求公约数或进行整数关系分析的代价太大,并且也很难得到进一步的结论,这时必须引入别的工具。在不做素数分解的情况下,分析整数关系最直观的方法就是带余除法,对任意整数a0,b,存在唯一数对m,r满足式子(8)。由r=bmaa,b的公约数必定是r的约数,并且r更小。如果继续对a,r做这样的运算,我们一定可以得到a,b的最大公约数。这便是辗转相除法的基本思想,早在欧几里得的《几何原本》中就有记载(故又称Euclid算法),熟悉算法的你一定也不陌生,这里就不展开细节了。

(8)b=ma+r,(0r<|a|)

  带余除法为整数的分析提供了一个简单有效的方法。比如我们再回头考虑一下式(1)中的所有线性组合,首先(b1,b2,,bn)显然也是每个线性组合的约数。考察线性组合中的最小正数c,如果它不是bk的约数,使用带余除法bk=mc+rr=bkmc也是线性组合但却更小。所以cb1,b2,,bn的公约数,结合刚才的结论可知c=(b1,b2,,bn)

  最大公约数可以看做是整数间的一个基本代数运算,我们已经看到有很多不同的途径来得到它,而这些途径并不依赖于最大公约数的定义。这就让我们想到,其实可以将它们看成是最大公约数的等价定义,在不同的场合灵活使用,可以得到更简洁的方法。以下便列举了这些等价定义,你可以尝试证明它们的等价性。

  (1)原始定义:最大的公约数;

  (2)约数的公倍数:是所有公约数的最小公倍数;

  (3)素数基本定理:素数分解式的公共部分;

  (4)线性组合:线性组合的最小正数;

  (5)辗转相除法:辗转相除法得到的最小正数。

  作为一个基本运算,需要稍微研究一下最大公约数的基本性质,请尝试通过不同途径证明下面的基本性质:

  (1)m(a1,a2,,an)=(ma1,ma2,man)

  (2)(a1,a2,,an)=((a1,a2),,an)

  (3)若(m,a)=1,则有(a,mb)=(a,b)

  (4)若mab,(m,a)=1,则mb

  (5)若am,bm,(a,b)=1,则abm

  (6)(a,b)[a,b]=ab

  公约数虽然定义简单,但却变化多端,当和其它知识结合起来时,问题会变得很困难。你需要熟练掌握初等数学中各种变形技巧,并需要足够的想象力和创造力。课本中的习题是最好的锻炼场所,你不能绕过那一步,这里仅列几例以抛砖引玉。

   已知adbc=±1u=am+bn,w=cm+dn,求证(u,w)=(m,n)

   a为奇数,则必有d<a使得a2d1。设这样数最小为d0,则a2h1成立的充要条件是d0h

   证明梅森(Mersenne)数Mp=2p1两两互素;

   求证1+12++1n不是整数;(提示:构造一个整数与之相乘后不为整数)

   若(a,b)=1,则对任意ma+kb,k=0,1,2,中有无数个与m互质的数。(提示:无穷递降)

3. 闲话素数

  话说素数的确非常重要,后面我们还会看到它更多的性质,这里再多说两句。首先,欧几里得在《几何原本》回答了素数的个数问题,假设仅有有限个素数p1,p2,,pn,考察表达式p1p2pn+1。它不以任何pk为约数,从而它也是素数,与假设矛盾,这就证明了素数有无穷多个。该证明使用了构造法和反证法,它的美妙是数学史上惊艳的一笔,你不妨可以用同样的方法解决以下问题。

   相邻素数之间的间隔可以有任意大;

   证明费马数Fn=22n+1的素因子互不相同,从而素数有无穷多个;

   使用数列an+1=an2an+1,(a0=2),证明素数有无穷多个;

   求证形如4k+3的素数有无穷多个;

   如果n(n1)!1,则n必为素数。

  根据算术基本原理,并使用级数理论(后续课程),容易有以下著名的欧拉公式(式子(9))。这个神奇的公式将调和级数与所有素数扯上了关系,这也成为了研究素数的一个突破口,巍峨耸立的黎曼猜想就是对它的扩展研究。顺便提一句,因为调和级数是发散的,故由此此也可以证明素数有无穷多个。

(9)1+12++1n+=k=1(11pk)1

  关于素数,还有一些自然的问题是:如何判定一个数是否为素数?如何找出一定范围内的所有素数?它们的分布是怎样的?是否有素数的通项公式?这些问题是很难回答的,它们也是数论的难点,很多问题都还没有被解决。古希腊时期的Eratosthenes筛法是目前仍在使用的筛选素数的方法,它逐步划去每个素数的倍数,从而仅余下素数,这在一般的算法教材里都有介绍。另外一般用π(x)表示不大于x的素数的个数,公式(10)是就是著名的素数定理,它表明了素数的平均密度。该定理最早由勒让德和高斯作为猜想提出,将近一百年后才被人用复变函数的理论所证明,再过了50年才有了初等证法。关于素数的问题我们就不深究了,它们也不是这里能回答得了的。

(10)π(x)xlnx,(x)

posted on   卞爱华  阅读(2231)  评论(2编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

点击右上角即可分享
微信分享提示