永发信息网

怎么找到最大公约数

答案:4  悬赏:50  手机版
解决时间 2021-12-03 09:33
怎么找到最大公约数
最佳答案
最大公约数也叫最大公因数,是两个数或多个数中相同的因数,若其中一个是质数,那最大公约数则是1。
  怎么求最大公约数:
  1、用分解质因数法,将几个数的所有公有质因数相乘的积;
  2、用短除法。
全部回答
把数拿来分解, 比如9 =3×3 12=4×3 最大的公约数就是3
用短除法把几个数公约数找出,再把几个公约数相乘所得的积,就是这几个数的最大公约数
最大公因数 - 基本简介 最大公因数,又称最大公约数,英文Greatest Common Divider,缩写GCD.   n(≥2)个自然数a1,a2,…,an的最大公因数。[1]最大公因数 - 定义方式 常有两种定义方式:   1. 它们的所有公因数中最大的那一个;   2. 如果自然数m是这n个自然数的公因数,且这n个数的任意公因数都是m的因数,就称m是这n个数的最大公因数.   a1,a2,…,an的最大公因数在国内常记为(a1,a2,…,an),国际通用记号为g.c.d.(a1,a2,…,an).   最大公因数必须为整数.   最大公因数用( )表示,例如:(1,2)=1。[2]最大公因数 - 产生 早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法使用到的原理很聪明也很简单,假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, y % x)(y > 0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数。最大公因数 - 性质 重要性质:gcd(a,b)=gcd(b,a) (交换律)gcd(-a,b)=gcd(a,b) gcd(a,a)=|a| gcd(a,0)=|a| gcd(a,1)=1 gcd(a,b)=gcd(b, a mod b) gcd(a,b)=gcd(b, a-b) 如果有附加的一个自然数m, 则: gcd(ma,mb)=m * gcd(a,b) (分配率) gcd(a+mb ,b)=gcd(a,b)   如果m是a和b的最大公约数,则: gcd(a/m ,b/m)=gcd(a,b)/m 在乘法函数中有:gcd(ab,m)=gcd(a,m) * gcd(b,m) 两个整数的最大公约数主要有两种寻找方法:* 两数各分解质因子,然后取出同样有的项乘起来 辗转相除法(扩展版)   和最小公倍数(lcm)的关系:gcd(a, b) * lcm(a, b) = ab 两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数。两个整数的最大公因子和最小公倍数中存在分配律:* gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c))   * lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a, c)) 在坐标里,将点(0, 0)和(a, b)连起来,通过整数坐标的点的数目(除了(0, 0)一点之外)就是gcd(a, b)。[3]最大公因数 - 算法 1、欧几里德算法和扩展欧几里德算法   欧几里德算法又称辗转相除法,用于计算两个整数a,b的    欧几里得
最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b)   证明:a可以表示成a = kb + r,则r = a mod b   假设d是a,b的一个公约数,则有   d|a, d|b,而r = a - kb,因此d|r   因此d是(b,a mod b)的公约数   假设d 是(b,a mod b)的公约数,则   d | b , d |r ,但是a = kb +r   因此d也是(a,b)的公约数   因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证   欧几里德算法就是根据这个原理来做的,其算法用C++语言描述为:   void swap(int & a, int & b)   {   int c = a;   a = b;   b = c;   }   int gcd(int a,int b)   {   if(0 == a )   {   return b;   }   if( 0 == b)   {   return a;   }   if(a > b)   {   swap(a,b);   }   int c;   for(c = a % b ; c > 0 ; c = a % b)   {   a = b;   b = c;   }   return b;   }   2、Stein算法   欧几里德算法是计算两个数最大公约数的传统算法,他无    寻找最大公约数
论从理论还是从效率上都是很好的。但是他有一个致命的缺陷,这个缺陷只有在大素数时才会显现出来。 考虑现在的硬件平台,一般整数最多也就是64位,对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位数除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。   Stein算法由J. Stein 1961年提出,这个方法也是计算两个数的最大公约数。和欧几里德算法不同的是,Stein算法只有整数的移位和加减法,这对于程序设计者是一个福音。   为了说明Stein算法的正确性,首先必须注意到以下结论:   gcd(a,a) = a,也就是一个数和他自身的公约数是其自身   gcd(ka,kb) = k gcd(a,b),也就是最大公约数运算和倍乘运算可以交换,特殊的,当k=2时,说明两个偶数的最大公约数必然能被2整除   C++/java 实现   // c++/java stein 算法   int gcd(int a,int b){   if(ab{   int temp = a;   a = b;   b=temp;   }   if(0==b)//the base case   return a;   if(a%2==0 && b%2 ==0)//a and b are even   return 2*gcd(a/2,b/2);   if ( a%2 == 0)// only a is even   return gcd(a/2,b);   if ( b%2==0 )// only b is even   return gcd(a,b/2);   return gcd((a+b)/2,(a-b)/2);// a and b are odd
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
砍伐桉树后的土地可以种植蔬菜吗
我在19几几年看了一部美国恐怖片叫《猛鬼列车
2000年适逢4年一润的润年,2月份加一天,29天
我国历史有了可靠文字记载开始( ),今天的
现在哪首韩国歌曲最红
新飞吸油烟机CXW-180-B01多钱
“国破家亡欲何之,西子湖头有我师。日月双悬
字典,这个单词如何拼写的翻译是:什么意思
同福居招待所这个地址在什么地方,我要处理点
五个是否是什么
学姐,学长好,一个没有工作的学弟求帮助
有拼音玉阶怨这首古诗
百里屠苏重生为太子长琴是哪部小说
一等十八年,有些事情急也没哟用 我了解 我不
/storage/emulated/o/dclm&#
推荐资讯
4272*2848分辨率的相片最大能冲印多大
有没有大神可以把水印和指法芬芳张大仙去掉,
请在左边方格中,各移动其中的一根火柴的位置
苏州紫翔电子公司怎么样
达达的商家怎么申请
艺人李万传是哪里的啊
为了省力,工人师傅常用图所示的斜面把物体搬
数学-2.38373628e+303是接近0值吗?
截至07月29日,您尾号7526的龙卡信用卡07月账
在四川地震灾区,活跃着一支特殊的志愿者队伍
韩国电影洒尿冲出地球叫什么
两位数乘以?0等于480
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?