唯一分解定理证明(WD)

from http://www.matrix67.com/blog/archives/495

为什么质因数分解的方法是唯一的。这个结论是如此的显然和易于接受,以致于有人会脱口而出:这当然是唯一的,不断使用越来越大的质数去试除,最后得到的肯定是唯一的质因数分解。不可否认,这个算法本身是没有任何问题的。根据合数的定义,试除与分解是一定能不断进行下去的,除非被除数本身变成了一个质数,而此时也标志着算法的结束。问题的关键就在于,这并不能说明原数能唯一地表示成质数的乘积:换一种试除的顺序会不会得出不同的分解方法?万一还有什么别的牛B大法也能用来分解质因数,而且结果与上面得到的完全不一样咋办?上面给出的算法只能说明我们能找出至少一种分解质因数的方法,用这种方法得到的结果是唯一的,但到底还有没有其它偏方秘籍能导出另外的分解方法来,我们就不得而知了。为了真正地证明,分解质因数的方法是唯一的,我们将再次用到反证法。假设存在某些数,它们有至少两种分解方法。那么根据上文提到的“非空正整数集里存在最小的元素”,一定有一个最小的数M,它能用至少两种方法表示成质数的乘积:

M = P1 * P2 * … * Pr = Q1 * Q2 * … * Qs
    下面我们将看到,这种假设会推出一个多么荒谬的结果来。不妨设P1 <= P2 <= ... <= Pr, Q1 <= Q2 <= ... <= Qs。显然,P1是不等于Q1的,不然两边同时约掉它,我们就得到一个更小的有两种分解方法的数。不妨设P1 < Q1,那么我们用P1替换掉等式最右边中的Q1,得到一个比M更小的数T = P1 * Q2 * Q3 * ... * Qs。令M‘ = M - T,我们得到M‘的两种表达:    M‘ = (P1 * P2 * ... * Pr) - (P1 * Q2 * ... * Qs) = P1 * (P2 * .. * Pr - Q2 * ... * Qs)  ……  (1)    M‘ = (Q1 * Q2 * ... * Qs) - (P1 * Q2 * ... * Qs) = (Q1 - P1) * Q2 * ... * Qs  ………………  (2)     由于T比M小,因此M‘是正整数。从(1)式中我们立即看到,P1是M‘的一个质因子。注意到M‘比M小,因此它的质因数分解方式应该是唯一的,可知P1也应该出现在表达式(2)中。既然P1比所有的Q都要小,因此它不可能恰好是(2)式中的某个Q,于是只可能被包含在因子(Q1-P1)里。但这就意味着,(Q1-P1)/P1除得尽,也就是说Q1/P1-1是一个整数,这样Q1/P1也必须得是整数。我们立即看出,P1必须也是Q1的一个因子,这与Q1是质数矛盾了。这说明,我们最初的假设是错误的。     唯一分解定理的一个重要的推论是,如果质数p是ab的因子,那么p或者是a的因子,或者是b的因子。我们刚才在证明过程中也不自觉地用到了这个推论。证明方法很简单,假如a和b里面都不含p,把a和b各自分解开来再乘到一起,我们就得到了数ab的一个没有因子p的分解方式;而按照前面提到的试除法,ab是可以表示成p与另一些质数的乘积的,这违背了唯一分解定理。连续多次使用该推论,我们可以很快将推论推广到多个数的情形。     事实上,假设这个推论成立,我们也能很快反过来推出唯一分解定理:写出N的两种质因数分解,在前一种分解中任取一个因子,它必然会在后一种分解方法中出现;把它们约掉之后结论继续适用,不断进行该操作直到最终两边都只余下一个1。这一系列操作说明了,两种分解方法实际上是相同的。我们看到,唯一分解定理和它的推论实际上是等价的。如果我们能够绕过唯一分解定理,用另一种方法证出这个推论,我们也就相当于找到了唯一分解定理的另一个证明。而事实上,运用扩展的辗转相除算法,我们可以飞快地完成推论的证明。我们将说明,如果质数p能整除ab,但不整除a,那它一定是b的约数。     质数p不能整除a,告诉我们a和p互质,于是存在整数k和l使得ka + lp = 1。等式两边同时乘以b,我们有kab + lpb = b。而ab能被p整除,也即存在整数r使得ab=pr。那么,kpr + lpb = p(kr + lb) = b,我们立即看出p是b的一个约数。

时间: 2024-10-12 13:23:31

唯一分解定理证明(WD)的相关文章

唯一分解定理

紫薯上的两个例题都提到了唯一分解定理 算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式. 证明见wiki:http://zh.wikipedia.org/wiki/%E7%AE%97%E6%9C%AF%E5%9F%BA%E6%9C%AC%E5%AE%9A%E7%90%86 下面给出计算唯一分解式的代码 int v[100];//唯一分解式中的各个素数 int vtop=0;//素数的种类 int e[100];//每

uva 10791 Minimum Sum LCM ( 唯一分解定理 )

使用唯一分解定理的时候不一定要打出素数表,这句话是相对上一篇来讲的.做这道题目之前我对唯一分解定理方法的理解不完全. 现在多想到了一些 唯一分解,将当前需要分解的n用因子将其分解表达.需要试因子. 因子的枚举应该是从2开始(从1开始没有意义),当当前数字n可以整除当前因子i时,就使其不断除以i,直到不能整除. 这个步骤实际上已经在根本上避免了出现像4.6这种因子在唯一分解式中的出现--之前的因子2和3已经将其代替了.所以可证明唯一分解时并不一定需要构造素数表 针对本题来说,最小公倍数的最小和,有

hdu4497-GCD and LCM-(欧拉筛+唯一分解定理+组合数)

GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 3409    Accepted Submission(s): 1503 Problem Description Given two positive integers G and L, could you tell me how many solutions of

HDU 1452 Happy 2004(唯一分解定理)

题目链接:传送门 题意: 求2004^x的所有约数的和. 分析: 由唯一分解定理可知 x=p1^a1*p2^a2*...*pn^an 那么其约数和 sum = (p1^0+p1^1^-+p1^a1)*-* (pn^0+pn^1^-+pn ) 代码如下: #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; const

NOIP2009Hankson 的趣味题[唯一分解定理|暴力]

题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲解了如何求两个正整数 c1 和 c2 的最大公约数和最小公倍数.现 在 Hankson 认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公 倍数”之类问题的“逆问题”,这个问题是这样的:已知正整数 a0,a1,b0,b1,设某未知正整 数 x 满足: 1. x 和 a0 的最大公约

欧几里德算法和唯一分解定理

刘汝佳<入门经典>上提供了一道经典的题目: 除法表达式,在NYOJ上可以找到原题,题号1013 描述 给出一个这样的除法表达式:X1/X2/X3/···/Xk,其中Xi是正整数.除法表达式应当按照从左到右的顺序求和,例如表达式1/2/1/2值为1/4.但是可以在表达式中嵌入括号以改变计算顺序,例如表达式(1/2)/(1/2)的值为1. 输入 首先输入一个N,表示有N组测试数据, 每组数据输入占一行,为一个除法 表 达式,输入保证合法. 使表达式的值为整数.k<=10000,Xi<=

Coderforce-574C Bear and Poker(素数唯一分解定理)

题目大意:给出n个数,问能不能通过让所有的数都乘以2的任意幂或乘以3的任意幂,使这n个数全都相等. 题目分析:最终n个数都是相等的,假设那个数为x,根据素数唯一分解定理,x能分解成m*2p3q.所以,只需将所有的a[i]一直除以2并且一直除以3,最终只需判断这n个数是否全部相等即可. 代码如下: # include<iostream> # include<cstdio> # include<cmath> # include<string> # include

唯一分解定理(算术基本定理)及应用

算术基本定理:任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N = p1^a1 * p2^a2 * p3^a3 * ... * pn^an (其中p1.p2.... pn为N的因子,a1.a2.... .an分别为因子的指数) 这样的分解称为 N 的标准分解式 应用: (1)一个大于1的正整数N,如果它的标准分解式为: N = p1^a1 * p2^a2 * p3^a3 * ... * pn^an (2)N的因子个数     M(N)= (1 + a1)*(1

uva 10375 唯一分解定理 筛法求素数【数论】

唯一分解理论的基本内容: 任意一个大于1的正整数都能表示成若干个质数的乘积,且表示的方法是唯一的.换句话说,一个数能被唯一地分解成质因数的乘积.因此这个定理又叫做唯一分解定理. 举个栗子:50=(2^1)*(5^2) 题目一般的思路就是要把素数表打出来,eg上面的例子 e={1,0,2,0,0......} 下面是两个题目,仅说说大致的思想: 题目一: E=(X1*X3*X4* ...*Xk)/X2   判断E是不是整数 如果把(X1*X3*X4* ...*Xk)分解成素数相乘,将X2也分解成素