词条 | 约数 |
释义 | 约数定义整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a叫b的倍数,b叫a的约数(或因数)。在大学之前,所指的一般都是正约数。约数和倍数相互依存,不能单独说某个数是约数或倍数。一个数的约数是有限的。 范例在自然数的范围内, 6的约数有:1、2、3、6。 10的约数有:1、2、5、10。 15的约数有:1、3、5、15。 18的约数有:1、2、3、6、9、18。 注意:一个数的约数包括1及其本身。 例如:能被24整除的有:1、2、3、4、6、8、12、24。 所以24的约数有:1、2、3、4、6、8、12、24。 最大公因数公因数如果一个数c既是数a的因数,又是数b的因数,那么c叫做a与b的公因数。可以表示为(a,b)=c。 最大公因数两个数的公因数中最大的一个,叫做这两个数的最大公因数。 最大公因数的求法1、 枚举法 将两个数的因数分别一一列出,从中找出其公因数,再从公因数中找出最大的一个,即为这两个数的最大公因数。 例:求30与24的最大公因数。 30的因数有:1,2,3,5,6,10,15,30 24的因数有:1,2,3,4,6,8,12,24 易得其公因数中最大的一个是6,所以30和24的最大公因数是6。 2、 短除法 短除符号就像一个倒过来的除号,短除法就是先写出要求最大公因数的两个数A、B,再画一个短除号,接着在原本写除数的位置写两个数公有的质因数Z(通常从最小的质数开始),然后在短除号的下方写出这两个数被Z整除的商a,b,对a,b重复以上步骤,以此类推,直到最后的商互质为止,再把所有的除数相乘,其积即为A,B的最大公因数。(短除法同样适用于求最小公倍数,只需将其所有除数与最后所得的商相乘即可) 例:求12和18的最大公约数。 解:用短除法,由左图,易得12和18的最大公约数为2×3=6.。 3、分解质因数将需要求最大公因数的两个数A,B分别分解质因数,再从中找出A、B公有的质因数,把这些公有的质因数相乘,即得A、B的最大公约数。 例:求48和36的最大公因数。 把48和36分别分解质因数: 48=2×2×2×2×3 36=2×2×3×3 其中48和36公有的质因数有2、2、3,所以48和36的最大公因数是 2×2×3=12。 4、辗转相除法(欧几里得算法)对要求最大公因数的两个数a、b,设b<a,先用b除a,得a=bq……r1(0≤r1<b)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q……r2 (0≤r2<r1).,若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1……如此循环,直到能整除为止。其最后一个非零余数即为(a,b)。 这一算法的证明如下: 设两数为a、b(b<a),用gcd(a,b)表示a,b的最大公约数,r=a mod b 为a除以b以后的余数,辗转相除法即是要证明gcd(a,b)=gcd(b,r)。 令c=gcd(a,b),则设a=mc,b=nc,根据前提有r =a-kb=mc-knc=(m-kn)c 由上,可知c也是r的因数,故可以断定m-kn与n互素【否则,可设m-kn=xd,n=yd,(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公因数成为cd,而非c】 所以 gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。 例:求8251和6105的最大公因数。 考虑用较大数减较小数,求得商和余数: 8251=6105×1+2146 6105=2146×2+1813 2146=1813×1+333 1813=333×5+148 333=148×2+37 148=37×4 最后除数37是148和37的最大公因数,也就是8251与6105的最大公因数。 因数5、更相减损术 更相减损术出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。其原文为:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。” 翻译成现代语言就是 第一步:任意给定两个正整数a、b;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。 第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。 这个数就是a、b的最大公约数。 例:求98与63的最大公因数。 分析:由于63不是偶数,把98和63以大数减小数,并辗转相减: 98-63=35 63-35=28 35-28=7 28-7=21 21-7=14 14-7=7 所以,98和63的最大公约数为7。 注:以上1、2、3同样适用于求多个自然数的最大公约数。 求约数个数的公式一般地,对自然数n进行分解质因数,设n可以分解为 n=p(1)^α(1)·p(2)^α*(2)·…·p(k)^α(k) 其中p(1)、p(2)、…p(k)是不同的质数,α(1)、α(2)、…α(k)是正整数,则形如 n=p(1)^β(1)·p(2)^β*(2)·…·p(k)^β(k) 的数都是n的约数,其中β(1)可取a(1)+1个值:0,1,2,…,α(1);β(2)可取α(2)+1个值:0,1,2,…,α(2)…;β(k)可取a(k)+1个值:0,1,2,…,α(k).且n的约数也都是上述形式,根据乘法原理,n的约数共有 (α(1)+1)(α(2)+1)…(α(k)+1) (7) 个。 式(7)即为求一个数约数个数的公式。 计算机算法实现(C语言)/*求两数的最大公约数和最小公倍数*/ /*解法一:辗转相除法 令大数为m,小数为n,若其余数residue不为0,则m=n,n=其余数,继续直到余数为0 */ submul(int m,int n) { int residue; while(residue=m%n) { m=n; n=residue; } return n; } /*解法二:穷举法 穷举出所有两个数的公约数 */ submul(int m,int n) { int i,residue; for(i=1;i<n;i++) if(m%i==0&&n%i==0)residue=i; return residue; } main() { int a,b,submultiple,multiple; scanf("%d%d",&a,&b); submultiple=a>b?submul(a,b):submul(b,a); multiple=a*b/submultiple; printf("%d %d\",submultiple,multiple); } 负约数定义国内课本中,最先提到约数这个概念是在小学,而此时还没学负数。 等到学了负数,一般要直到大学数学系“初等数论”中才严格定义约数,那个时候就包括负约数了。 如果d|a并且d≥0,则我们说d是a的约数。注意,d|a当且仅当(-d)|a,因此定义约数为非负整数不会失去一般性,只要明白a的任何约数的相应负数同样能整除a。一个整数a的约数最小为1,最大为|a|。 例题105的负约数的和是多少? 105的所有负约数就是105的所有正约数的相反数所组成的集合。 105的正约数有1,3,5,7,15,21,35,105 105的负约数有-1,-3,-5,-7,-15,-21,-35,-105 其和为 -(1+3+5+7+15+21+35+105) = ﹣192 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。